Revision: 6543 http://languagetool.svn.sourceforge.net/languagetool/?rev=6543&view=rev Author: dnaber Date: 2012-02-23 22:31:47 +0000 (Thu, 23 Feb 2012) Log Message: ----------- patch by Maksym Davydov, quote: 1. Multiline list verification enabled for Ukrainian to prevent false lowercase sentence start alarm (where possible, because we should have some way to access previous sentence to do complete check) 2. Rules for correct use of prepositions "?\208?\163", "?\208?\146", "?\208?\134", "?\208?\153", "?\208?\151?\208?\134", "?\208?\134?\208?\151", "?\208?\151" were added. 3. A rule for "?\208?\146?\209?\129?\209?\150"/"?\208?\163?\209?\129?\209?\150" check was added
Modified Paths: -------------- trunk/JLanguageTool/src/java/org/languagetool/rules/UppercaseSentenceStartRule.java trunk/JLanguageTool/src/rules/uk/grammar.xml trunk/JLanguageTool/src/test/org/languagetool/rules/UppercaseSentenceStartRuleTest.java Modified: trunk/JLanguageTool/src/java/org/languagetool/rules/UppercaseSentenceStartRule.java =================================================================== --- trunk/JLanguageTool/src/java/org/languagetool/rules/UppercaseSentenceStartRule.java 2012-02-23 18:45:50 UTC (rev 6542) +++ trunk/JLanguageTool/src/java/org/languagetool/rules/UppercaseSentenceStartRule.java 2012-02-23 22:31:47 UTC (rev 6543) @@ -91,7 +91,7 @@ boolean noException = false; //fix for lists; note - this will not always work for the last point in OOo, //as OOo might serve paragraphs in any order. - if ((language == Language.RUSSIAN || language == Language.POLISH) + if ((language == Language.RUSSIAN || language == Language.POLISH || language == Language.UKRAINIAN) && (";".equals(lastParagraphString) || ";".equals(lastToken) || ",".equals(lastParagraphString) || ",".equals(lastToken))) { noException = true; @@ -99,7 +99,7 @@ //fix for comma in last paragraph; note - this will not always work for the last point in OOo, //as OOo might serve paragraphs in any order. if ((language == Language.RUSSIAN || language == Language.ITALIAN - || language == Language.POLISH || language == Language.GERMAN) + || language == Language.POLISH || language == Language.GERMAN || language == Language.UKRAINIAN) && (",".equals(lastParagraphString))) { noException = true; } Modified: trunk/JLanguageTool/src/rules/uk/grammar.xml =================================================================== --- trunk/JLanguageTool/src/rules/uk/grammar.xml 2012-02-23 18:45:50 UTC (rev 6542) +++ trunk/JLanguageTool/src/rules/uk/grammar.xml 2012-02-23 22:31:47 UTC (rev 6543) @@ -11,7 +11,7 @@ <rules lang="uk" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../rules.xsd"> - + <category name="Пунктуація"> <!-- TODO: Вставні вирази: "з іншого боку", "на мою думку", "на жаль" @@ -108,7 +108,7 @@ </pattern> <message>Прийменник перед дієсловом <suggestion>\2</suggestion></message> <example type="correct">Їм треба їхати.</example> - <example type="correct">Їм треба вїхати.</example> + <example type="correct">Їм треба в'їхати.</example> <example type="incorrect">Їм треба <marker>в їхати</marker>.</example> </rule> </rulegroup> @@ -146,26 +146,173 @@ <example type="incorrect"><marker>Поле і</marker> ліс.</example> </rule> --> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token regexp="yes">.*[56789ґйцкнгшщзхфвпрлджчсмтьбqwrtpsdfghjklzxcvbnm]</token> + <token>в</token> + <token regexp="yes">[1234567890ґйцкнгшщзхфвпрлджчсмтьбqwrtpsdfghjklzxcvbnm].*</token> + </pattern> + <message>Між двома приголосними варто писати у:\1 <suggestion>у</suggestion> \3</message> + <example type="correct">Стіг у степу.</example> + <example type="incorrect">Стіг <marker>в</marker> степу.</example> + </rule> + + <rule> + <pattern mark_from="0" mark_to="-1"> + <token>в</token> + <token regexp="yes">[28вфvfw].*|[ґйцкнгшщзхпрлджчсмтьбqwrtpsdghjklzxcbnm]*[вфvfw].*</token> + </pattern> + <message>Перед словами, що починаються на в, ф або збігом приголосних із в, ф пишемо у: <suggestion>у</suggestion> \2</message> + <example type="correct">у вівторок.</example> + <example type="correct">Сьогодні у Львові.</example> + <example type="incorrect"><marker>в</marker> вівторок.</example> + <example type="incorrect">Сьогодні <marker>в</marker> Львові.</example> + </rule> + + <rule> + <pattern mark_from="1" mark_to="-1"> + <token postag="SENT_START" /> + <token>в</token> + <token regexp="yes">[1234567890ґйцкнгшщзхфвпрлджчсмтьбqwrtpsdfghjklzxcvbnm].*</token> + </pattern> + <message>На початку речення перед приголосними варто писати у: <suggestion>У</suggestion> \3</message> + <example type="correct">У закладі.</example> + <example type="incorrect"><marker>В</marker> закладі.</example> + </rule> + + <rule> <pattern> - <token regexp="yes">.*[аеєиіїоуюя]</token> + <token postag="SENT_START" /> + <token>всі</token> + </pattern> + <message>На початку речення бажано писати <suggestion>Усі</suggestion></message> + <example type="correct">Усі заклади.</example> + <example type="incorrect"><marker>Всі</marker> заклади.</example> + </rule> + + <rule> + <pattern mark_from="1" mark_to="0"> + <token regexp="yes">[(){}:;,./?!]*</token> + <token>всі</token> + </pattern> + <message>після паузи варто писати <suggestion>усі</suggestion></message> + <example type="correct">Звичайно, усі заклади.</example> + <example type="incorrect">Звичайно, <marker>всі</marker> заклади.</example> + </rule> + + <rule> + <pattern mark_from="1" mark_to="-1"> + <token regexp="yes">[(){}:;,./?!]*</token> + <token>в</token> + <token regexp="yes">[1234567890ґйцкнгшщзхфвпрлджчсмтьбqwrtpsdfghjklzxcvbnm1234567890].*</token> + </pattern> + <message>після паузи перед приголосними варто писати у: <suggestion>у</suggestion> \3</message> + <example type="correct">Звичайно, у закладі.</example> + <example type="incorrect">Звичайно, <marker>в</marker> закладі.</example> + </rule> + + <rule> + <pattern mark_from="1" mark_to="-1"> + <token postag="SENT_START" /> + <token>У</token> + <token regexp="yes">[уеїіаоєяиюeyuioa].*</token> + </pattern> + <message>На початку речення перед голосними варто писати В: <suggestion>В</suggestion> \3</message> + <example type="correct">В Україні.</example> + <example type="incorrect"><marker>У</marker> Україні.</example> + </rule> + + <rule> + <pattern mark_from="1" mark_to="-1"> + <token regexp="yes">.*[уеїіаоєяиюeyuioa]</token> <token>у</token> - <token regexp="yes" negate="yes">в.*</token> + <token regexp="yes">[уеїіаоєяиюeyuioa].*</token> </pattern> - <message>Зіяння <suggestion>\1 в \3</suggestion></message> + <message>Між двома голосними варто писати у: \1 <suggestion>в</suggestion> \3</message> + <example type="correct">Країна в Азії.</example> + <example type="incorrect">Країна <marker>у</marker> Азії.</example> + </rule> + + <rule> + <pattern mark_from="1" mark_to="-1"> + <token regexp="yes">.*[уеїіаоєяиюeyuioa]</token> + <token>і</token> + <token regexp="yes">[уеіаоиeioa].*</token> + </pattern> + <message>Між двома голосними варто писати й: \1 <suggestion>й</suggestion> \3</message> + <example type="correct">Марко й Іван.</example> + <example type="incorrect">Марко <marker>і</marker> Іван.</example> + </rule> + + <rule> + <pattern mark_from="0" mark_to="-1"> + <token>й</token> + <token regexp="yes">[йїєяюyu].*</token> + </pattern> + <message>Перед й,ї,є,я,ю варто писати і: <suggestion>і</suggestion> \2</message> + <example type="correct">Хто і як?</example> + <example type="incorrect">Хто <marker>й</marker> як?</example> + </rule> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token regexp="yes">.*[уеїіаоєяиюeyuioa]</token> + <token>у</token> + <token regexp="yes" negate="yes">[вфvfw28].*|[ґйцкнгшщзхпрлджчсмтьбqwrtpsdghjklzxcbnm]*[вфvfw].*</token> + </pattern> + <message>Після голосної та перед більшістю приголосних варто писати в: \1 <suggestion>в</suggestion> \3</message> <example type="correct">Балка в степу.</example> - <example type="incorrect"><marker>Балка у степу</marker>.</example> + <example type="correct">Вулиця у Львові.</example> + <example type="incorrect">Балка <marker>у</marker> степу.</example> </rule> + <rule> - <pattern> - <token>зі</token> - <token regexp="yes">[аеєиіїоуюя].*</token> + <pattern mark_from="0" mark_to="-1"> + <token regexp="yes">зі|із</token> + <token regexp="yes">[уеїіаоєяиюeyuioa].*</token> </pattern> - <message>Зіяння <suggestion>з \2</suggestion></message> + <message>Перед голосною вживаємо з: <suggestion>з</suggestion> \2</message> <example type="correct">Потяг з Австрії.</example> - <example type="incorrect">Потяг <marker>зі Австрії</marker>.</example> + <example type="incorrect">Потяг <marker>зі</marker> Австрії.</example> </rule> - </rulegroup> + + <rule> + <pattern mark_from="1" mark_to="-1"> + <token regexp="yes">.*[56789ґйцкнгшщзхфвпрлджчсмтьбqwrtpsdfghjklzxcvbnm]</token> + <token regexp="yes">з|зі</token> + <token regexp="yes">[зсцчшщzcs][ь']*[уеїіаоєяиюeyuioa].*|[1234567890ґйкнгхфвпрлджмтьбqwrtpdfghjklxvbnm].*</token> + </pattern> + <message>Між двома приголосними пишемо із: \1 <suggestion>із</suggestion> \2</message> + <example type="correct">Потяг із вагонами.</example> + <example type="correct">Комп'ютер зі знаком.</example> + <example type="incorrect">Висновок <marker>зі</marker> цього.</example> + <example type="incorrect">Потяг <marker>з</marker> вагонами.</example> + </rule> + + <rule> + <pattern mark_from="1" mark_to="-1"> + <token regexp="yes">.*[уеїіаоєяиюeyuioa]</token> + <token regexp="yes">з|зі</token> + <token regexp="yes">[зсцчшщ][ь]*[^ґйцкнгшщзхфвпрлджчсмтьб].*</token> + </pattern> + <message>Після голосної перед свистячими і шиплячими пишемо із: \1 <suggestion>із</suggestion> \2</message> + <example type="correct">Родина із шести осіб</example> + <example type="incorrect">Родина <marker>з</marker> шести осіб.</example> + <example type="incorrect">Родина <marker>зі</marker> шести осіб.</example> + </rule> + + <rule> + <pattern mark_from="0" mark_to="-1"> + <token regexp="yes">із|з</token> + <token regexp="yes">[зсцчшщ][ь]*[56789ґйцкнгшщзхфвпрлджчсмтбqwrtpsdfghjklzxcvbnm].*</token> + </pattern> + <message>Перед сполученням приголосних із початковим свистячим або шиплячим пишемо зі: \1 <suggestion>зі</suggestion> \2</message> + <example type="correct">Бере книжку зі стола.</example> + <example type="correct">Висновок із цього.</example> + <example type="incorrect">Бере книжку <marker>із</marker> стола.</example> + <example type="incorrect">Бере книжку <marker>з</marker> стола.</example> + </rule> + </rulegroup> </category> <!-- Modified: trunk/JLanguageTool/src/test/org/languagetool/rules/UppercaseSentenceStartRuleTest.java =================================================================== --- trunk/JLanguageTool/src/test/org/languagetool/rules/UppercaseSentenceStartRuleTest.java 2012-02-23 18:45:50 UTC (rev 6542) +++ trunk/JLanguageTool/src/test/org/languagetool/rules/UppercaseSentenceStartRuleTest.java 2012-02-23 22:31:47 UTC (rev 6543) @@ -110,6 +110,16 @@ assertEquals(1, matches.length); assertEquals(1, matches[0].getSuggestedReplacements().size()); assertEquals("Автор", matches[0].getSuggestedReplacements().get(0)); + + List<RuleMatch> matches_list; + matches_list = langTool.check("Це список з декількох рядків:\n\nрядок 1,\n\nрядок 2,\n\nрядок 3."); + assertEquals(0, matches_list.size()); + + matches_list = langTool.check("Це список з декількох рядків:\n\nрядок 1;\n\nрядок 2;\n\nрядок 3."); + assertEquals(0, matches_list.size()); + + matches_list = langTool.check("Це список з декількох рядків:\n\n 1) рядок 1;\n\n2) рядок 2;\n\n3)рядок 3."); + assertEquals(0, matches_list.size()); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Virtualization & Cloud Management Using Capacity Planning Cloud computing makes use of virtualization - but cloud computing also focuses on allowing computing to be delivered as a service. http://www.accelacomm.com/jaw/sfnl/114/51521223/ _______________________________________________ Languagetool-cvs mailing list Languagetool-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/languagetool-cvs