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

Reply via email to