[LanguageTool] SF.net SVN: languagetool:[6369] trunk/JLanguageTool/src/java/org/ languagetool
Revision: 6369 http://languagetool.svn.sourceforge.net/languagetool/?rev=6369view=rev Author: dnaber Date: 2012-01-29 11:33:53 + (Sun, 29 Jan 2012) Log Message: --- small code cleanup Modified Paths: -- trunk/JLanguageTool/src/java/org/languagetool/Main.java trunk/JLanguageTool/src/java/org/languagetool/openoffice/Main.java Modified: trunk/JLanguageTool/src/java/org/languagetool/Main.java === --- trunk/JLanguageTool/src/java/org/languagetool/Main.java 2012-01-29 06:14:32 UTC (rev 6368) +++ trunk/JLanguageTool/src/java/org/languagetool/Main.java 2012-01-29 11:33:53 UTC (rev 6369) @@ -164,22 +164,16 @@ boolean oneTime = false; if (!-.equals(filename)) { if (autoDetect) { - Language language = detectLanguageOfFile(filename, encoding); - if (language == null) { - System.err.println(Could not detect language well enough, using English); - language = Language.ENGLISH; - } - try { - changeLanguage(language, motherTongue, disabledRules, enabledRules); - } catch (SAXException e) { - e.printStackTrace(); - } catch (ParserConfigurationException e) { - e.printStackTrace(); - } - System.out.println(Using + language.getName() + for file + filename); +Language language = detectLanguageOfFile(filename, encoding); +if (language == null) { + System.err.println(Could not detect language well enough, using English); + language = Language.ENGLISH; +} +changeLanguage(language, motherTongue, disabledRules, enabledRules); +System.out.println(Using + language.getName() + for file + filename); } final File file = new File(filename); - // run once on file if the file size MAXFILESIZE or + // run once on file if the file size MAX_FILE_SIZE or // when we use the bitext mode (we use a bitext reader // instead of a direct file access) oneTime = file.length() MAX_FILE_SIZE || bitextMode; @@ -256,22 +250,16 @@ sb.append(line); lineCount++; // to detect language from the first input line - if (lineCount == 1 autoDetect) { - Language language = detectLanguageOfString(line); - if (language == null) { - System.err.println(Could not detect language well enough, using English); - language = Language.ENGLISH; - } - System.out.println(Language used is: + language.getName()); - language.getSentenceTokenizer().setSingleLineBreaksMarksParagraph( -singleLineBreakMarksParagraph); - try { - changeLanguage(language, motherTongue, disabledRules, enabledRules); - } catch (SAXException e) { - e.printStackTrace(); - } catch (ParserConfigurationException e) { - e.printStackTrace(); - } + if (lineCount == 1 autoDetect) { +Language language = detectLanguageOfString(line); +if (language == null) { + System.err.println(Could not detect language well enough, using English); + language = Language.ENGLISH; +} +System.out.println(Language used is: + language.getName()); +language.getSentenceTokenizer().setSingleLineBreaksMarksParagraph( +singleLineBreakMarksParagraph); +changeLanguage(language, motherTongue, disabledRules, enabledRules); } sb.append('\n'); tmpLineOffset++; @@ -634,9 +622,10 @@ } return language; } - - private void changeLanguage(Language language, Language motherTongue, - String[] disabledRules, String[] enabledRules ) throws IOException, SAXException, ParserConfigurationException { + + private void changeLanguage(Language language, Language motherTongue, + String[] disabledRules, String[] enabledRules) { +try { lt = new JLanguageTool(language, motherTongue); lt.activateDefaultPatternRules(); lt.activateDefaultFalseFriendRules(); @@ -644,6 +633,9 @@ if (verbose) { lt.setOutput(System.err); } +} catch (Exception e) { + throw new RuntimeException(Could not create LanguageTool instance for language + language, e); +} } } Modified: trunk/JLanguageTool/src/java/org/languagetool/openoffice/Main.java === --- trunk/JLanguageTool/src/java/org/languagetool/openoffice/Main.java 2012-01-29 06:14:32 UTC (rev 6368) +++ trunk/JLanguageTool/src/java/org/languagetool/openoffice/Main.java 2012-01-29 11:33:53 UTC (rev 6369) @@ -255,13 +255,11 @@
[LanguageTool] SF.net SVN: languagetool:[6371] trunk/JLanguageTool/src
Revision: 6371 http://languagetool.svn.sourceforge.net/languagetool/?rev=6371view=rev Author: dnaber Date: 2012-01-29 12:02:11 + (Sun, 29 Jan 2012) Log Message: --- code cleanup: moving methods; re-throwing exceptions instead of just printing them Modified Paths: -- trunk/JLanguageTool/src/dev/org/languagetool/dev/conversion/AtdRuleConverter.java trunk/JLanguageTool/src/dev/org/languagetool/dev/conversion/RuleConverter.java trunk/JLanguageTool/src/dev/org/languagetool/dev/conversion/RuleConverterMain.java trunk/JLanguageTool/src/dev/org/languagetool/dev/conversion/RuleCoverage.java trunk/JLanguageTool/src/dev/org/languagetool/dev/conversion/gui/Main.java trunk/JLanguageTool/src/dev/org/languagetool/dev/conversion/gui/MainMenuBar.java trunk/JLanguageTool/src/java/org/languagetool/Main.java Modified: trunk/JLanguageTool/src/dev/org/languagetool/dev/conversion/AtdRuleConverter.java === --- trunk/JLanguageTool/src/dev/org/languagetool/dev/conversion/AtdRuleConverter.java 2012-01-29 11:54:14 UTC (rev 6370) +++ trunk/JLanguageTool/src/dev/org/languagetool/dev/conversion/AtdRuleConverter.java 2012-01-29 12:02:11 UTC (rev 6371) @@ -41,16 +41,16 @@ import morfologik.stemming.IStemmer; import morfologik.stemming.WordData; - public class AtdRuleConverter extends RuleConverter { private static final Pattern nounInPattern = Pattern.compile(NN(?!P|S|\\.)); private static final Pattern wordReference = Pattern.compile((\\d+)); // a word reference, e.g. \1 private static final Pattern wordReferenceTransform = Pattern.compile((\\d+):([^:]+)); private static final Pattern uppercase = Pattern.compile([A-Z]); - +private static final String ENGLISH_DICT = /en/english.dict; + private static IStemmer dictLookup = (DictionaryLookup) loadDictionary(); - + private String avoidMessage = ; // default constructor @@ -206,15 +206,14 @@ /** * Takes a HashMap of an AtD rule, and returns a list of lines of XML in LT format. * - * @param rule: HashMap of values like pattern and message + * @param ruleObject: HashMap of values like pattern and message * @param id: String of rule id * @param name: String of rule name * * @return list of XML lines - * */ @SuppressWarnings(unchecked) - @Override + @Override public ListString ltRuleAsList(Object ruleObject, String id, String name, String type) { ArrayListHashMapString,String outerList = new ArrayListHashMapString,String(); HashMapString,String mainRule = (HashMapString,String)ruleObject; @@ -811,26 +810,25 @@ // changes for later private static boolean inDictionary(String word) { if (dictLookup == null) { -dictLookup = (DictionaryLookup) loadDictionary(); +dictLookup = loadDictionary(); } return !dictLookup.lookup(word).isEmpty(); } // this should be general, not specific to English private static IStemmer loadDictionary() { -IStemmer dictLookup = null; -String fileName = /en/english.dict; -URL url = JLanguageTool.getDataBroker().getFromResourceDirAsUrl(fileName); -File dictFile = null; +IStemmer dictLookup; +URL url = JLanguageTool.getDataBroker().getFromResourceDirAsUrl(ENGLISH_DICT); +File dictFile; try { dictFile = new File(url.toURI()); } catch (URISyntaxException e) { - e.printStackTrace(); + throw new RuntimeException(Could not load + ENGLISH_DICT, e); } try { -dictLookup = new DictionaryLookup(Dictionary.read(dictFile)); + dictLookup = new DictionaryLookup(Dictionary.read(dictFile)); } catch (IOException e) { -e.printStackTrace(); + throw new RuntimeException(Could not load + dictFile, e); } return dictLookup; } @@ -838,23 +836,23 @@ /** * Checks if an element of the AtD pattern has a specific postag. * @param word: an element of an AtD pattern; (accepts both .\*\/NN and word types) - * @param postag: a specific postag (no regexes) + * @param posTag: a specific postag (no regexes) * @return */ -public static boolean hasSpecificPosTag(String word, String postag) { +public static boolean hasSpecificPosTag(String word, String posTag) { if (dictLookup == null) { dictLookup = (DictionaryLookup) loadDictionary(); } if (hasPosTag(word)) { - String[] splitWord = word.split(/); - if (Pattern.matches(splitWord[1], postag)) { + final String[] splitWord = word.split(/); + if (Pattern.matches(splitWord[1], posTag)) {
[LanguageTool] SF.net SVN: languagetool:[6372] trunk/JLanguageTool/src/rules/fr/grammar. xml
Revision: 6372 http://languagetool.svn.sourceforge.net/languagetool/?rev=6372view=rev Author: dominikoeo Date: 2012-01-29 13:32:30 + (Sun, 29 Jan 2012) Log Message: --- [fr] - fixed false positive in Le contrat est n?\195?\169goci?\195?\169 de gr?\195?\169 ?\195?\160 gr?\195?\169. - fixed rule R_AVANTAGE which was reporting the same error twice - fixed warnings in ant test in rule QUE_AVOIR (some skip=... should not have been there). Modified Paths: -- trunk/JLanguageTool/src/rules/fr/grammar.xml Modified: trunk/JLanguageTool/src/rules/fr/grammar.xml === --- trunk/JLanguageTool/src/rules/fr/grammar.xml2012-01-29 12:02:11 UTC (rev 6371) +++ trunk/JLanguageTool/src/rules/fr/grammar.xml2012-01-29 13:32:30 UTC (rev 6372) @@ -645,6 +645,7 @@ tokend/token token regexp=yes[’´'‛′‘]/token token regexp=yesavantages?/token + token negate=yes regexp=yesde|du|d/token !-- avoids reporting error twice -- /pattern messageVoulez-vous écrire suggestiondavantage/suggestion ?/message example type=incorrectJe pense markerd’avantage/marker à cette solution./example @@ -3882,8 +3883,8 @@ token negate=yes regexp=yesplus|moins|de|à|appareil|[’´'‛′‘]//token token postag=N . p postag_regexp=yes/ token regexp=yes skip=2que?/token - token postag=V avoir ind.* postag_regexp=yes skip=2exception postag=A scope=next//token - token postag=V ppa.* s postag_regexp=yes skip=1exception postag=V inf scope=next//token + token postag=V avoir ind.* postag_regexp=yes skip=2/ + token postag=V ppa.* s postag_regexp=yes/ /pattern messageSi « \2 » est l’antécédent du relatif « \3 », vérifiez l’accord du participe « \5 » en nombre./message example type=correctLes documents qu’ils markeront achetés/marker./example @@ -3897,7 +3898,7 @@ token postag=N . s postag_regexp=yes/ token regexp=yes skip=2que?/token token postag=V avoir ind.* postag_regexp=yes skip=2/ - token postag=V ppa.* p postag_regexp=yesexception postag=V inf scope=next//token + token postag=V ppa.* p postag_regexp=yes/ /pattern messageSi « \2 » est l’antécédent du relatif « \3 », vérifiez l’accord du participe « \5 » en nombre./message example type=correctLe document qu’ils markeront acheté/marker./example @@ -3909,7 +3910,7 @@ token postag=N f .* postag_regexp=yesexception regexp=yesimpression|fois/exception/token token regexp=yes skip=2que?/token token postag=V avoir ind.* postag_regexp=yes skip=2/ - token postag=V ppa m .* postag_regexp=yesexception postag=V inf scope=next//token + token postag=V ppa m .* postag_regexp=yes/token /pattern messageSi « \2 » est l’antécédent du relatif « \3 », vérifiez l’accord du participe « \5 » en genre./message example type=correctLa femme que j’markerai aidée/marker./example @@ -3927,7 +3928,7 @@ token postag=N m .* postag_regexp=yes/ token regexp=yes skip=2que?/token token postag=V avoir ind.* postag_regexp=yes skip=2/ - token postag=V ppa f .* postag_regexp=yesexception postag=V inf scope=next//token + token postag=V ppa f .* postag_regexp=yes/token /pattern messageSi « \2 » est l’antécédent du relatif « \3 », vérifiez l’accord du participe « \5 » en genre./message example type=correctL’homme que j’markerai aidé/marker./example @@ -19861,12 +19862,13 @@ /rule rule id=ETRE_GRE name=être gré pattern mark_to=-1 -token inflected=yes skip=2être/token +token inflected=yesêtre/token tokengré/token /pattern message« Être gré » est un tour critiqué. Employez suggestionsavoir/suggestion./message example type=incorrectmarkerêtre/marker gré/example example type=correctmarkersavoir gré/marker/example + example type=correctLe contrat est négocié de gré à gré./example /rule rulegroup id=PIRE_ALLER name=pire(-)aller rule This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. -- Try before you buy = See our experts in action! The most comprehensive online learning library for Microsoft developers is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, Metro Style Apps, more. Free future releases when you subscribe now! http://p.sf.net/sfu/learndevnow-dev2 ___ Languagetool-cvs mailing list Languagetool-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/languagetool-cvs
[LanguageTool] SF.net SVN: languagetool:[6376] trunk/website/www/ru/index.php
Revision: 6376 http://languagetool.svn.sourceforge.net/languagetool/?rev=6376view=rev Author: yakovru Date: 2012-01-29 14:17:40 + (Sun, 29 Jan 2012) Log Message: --- [ru] New paragraph Modified Paths: -- trunk/website/www/ru/index.php Modified: trunk/website/www/ru/index.php === --- trunk/website/www/ru/index.php 2012-01-29 14:08:16 UTC (rev 6375) +++ trunk/website/www/ru/index.php 2012-01-29 14:17:40 UTC (rev 6376) @@ -135,11 +135,12 @@ a href=http://languagetool.wikidot.com/command-line-options;Ключи командной строки консольного приложения/a -h2Варианты использования/h2a href=http://languagetool.wikidot.com/command-line-options;Ключи командной строки консольного приложения/li +h2Примеры интеграции/h2 ul li a href=../usageПримеры программного кода для интеграции с другими программами/a/li /ul + p class=firstparastrongИнтеграция LanguageTool с приложениями/strong:/p ul style=list-style:nonea href=http://www.languagetool.org/webstart/web/LanguageTool.jnlp; @@ -157,12 +158,12 @@ pa href=../forumФорум/a или a href=http://myooo.ru/content/view/83/43/;домашняя страничка расширения для OpenOffice.org/LibreOffice/a/p -!-- + h2Нужна помощь?/h2 - -- -!-- -p?=show_link(Список известных проблем, issues, 0)?./p - --a href=http://languagetool.wikidot.com/command-line-options;Ключи командной строки консольного приложения/li + +p?=show_link(Список известных проблем, ../issues, 0)?./p + + h2Лицензия и исходный код/h2 pLanguageTool свободно распространятся по лицензии ?=show_link(LGPL, http://www.fsf.org/licensing/licenses/lgpl.html#SEC1;, 0)?. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. -- Try before you buy = See our experts in action! The most comprehensive online learning library for Microsoft developers is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, Metro Style Apps, more. Free future releases when you subscribe now! http://p.sf.net/sfu/learndevnow-dev2 ___ Languagetool-cvs mailing list Languagetool-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/languagetool-cvs
[LanguageTool] SF.net SVN: languagetool:[6377] trunk/JLanguageTool/src/rules/br/grammar. xml
Revision: 6377 http://languagetool.svn.sourceforge.net/languagetool/?rev=6377view=rev Author: dominikoeo Date: 2012-01-29 14:18:11 + (Sun, 29 Jan 2012) Log Message: --- [br] detect error in things like *Pep pemp munut* ?\226?\134?\146 Bep pemp munut. Modified Paths: -- trunk/JLanguageTool/src/rules/br/grammar.xml Modified: trunk/JLanguageTool/src/rules/br/grammar.xml === --- trunk/JLanguageTool/src/rules/br/grammar.xml2012-01-29 14:17:40 UTC (rev 6376) +++ trunk/JLanguageTool/src/rules/br/grammar.xml2012-01-29 14:18:11 UTC (rev 6377) @@ -4538,6 +4538,31 @@ /rule /rulegroup +rulegroup id=PEP_BEP name=bep ha pep + rule +pattern mark_to=-1 + tokenpep/token + token regexp=yesgwech|gwezh|segond|munut|eur|deiz|noz|mintin|beure|enderv|abardae|sizhun|miz|kantved|Lun|Merc’her|Yaou|Gwener|Sadorn|Sul|Genver|C’hwevrer|Meurzh|Ebrel|Mae|Even|Mezheven|Gouere|Gouhere|Eost|Gwengolo|Here|Du|Kerdu|Kerzu/token +/pattern +messagesuggestionbep/suggestion a vez implijet a-raok un anv amazer./message +example type=incorrectDont a ra amañ markerpep/marker Sul./example +example type=correctDont a ra amañ bep Sul./example +example type=correctAr pep retañ eo ober se./example + /rule + rule +pattern mark_to=-2 + tokenpep/token + token postag=K.* postag_regexp=yes/ + token regexp=yesgwech|gwezh|segond|munut|eur|deiz|noz|mintin|beure|enderv|abardae|sizhun|miz|kantved|Lun|Merc’her|Yaou|Gwener|Sadorn|Sul|Genver|C’hwevrer|Meurzh|Ebrel|Mae|Even|Mezheven|Gouere|Gouhere|Eost|Gwengolo|Here|Du|Kerdu|Kerzu/token +/pattern +messagesuggestionbep/suggestion a vez implijet a-raok un anv amazer./message +example type=incorrectDont a ra amañ markerpep/marker eil Sul./example +example type=correctDont a ra amañ bep eil Sul./example +example type=incorrectmarkerPep/marker pemp munut/example +example type=correctmarkerBep/marker pemp munut/example + /rule +/rulegroup + /category !-- vim: foldmethod=marker foldmarker=category,/category: -- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. -- Try before you buy = See our experts in action! The most comprehensive online learning library for Microsoft developers is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, Metro Style Apps, more. Free future releases when you subscribe now! http://p.sf.net/sfu/learndevnow-dev2 ___ Languagetool-cvs mailing list Languagetool-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/languagetool-cvs
[LanguageTool] SF.net SVN: languagetool:[6380] trunk/JLanguageTool/src/rules/br/grammar. xml
Revision: 6380 http://languagetool.svn.sourceforge.net/languagetool/?rev=6380view=rev Author: dominikoeo Date: 2012-01-29 19:14:02 + (Sun, 29 Jan 2012) Log Message: --- [br] added rule to find errors such as: *Alies am eus debret se* ?\226?\134?\146 Alies em eus debret se. Modified Paths: -- trunk/JLanguageTool/src/rules/br/grammar.xml Modified: trunk/JLanguageTool/src/rules/br/grammar.xml === --- trunk/JLanguageTool/src/rules/br/grammar.xml2012-01-29 18:00:59 UTC (rev 6379) +++ trunk/JLanguageTool/src/rules/br/grammar.xml2012-01-29 19:14:02 UTC (rev 6380) @@ -1990,6 +1990,33 @@ example type=correctPeogwir em eus amzer a-walc’h./example /rule /rulegroup +rulegroup id=ADV_E name=adverb + e + rule +pattern mark_from=1 mark_to=-1 + token postag=Aexceptiona-walc’h/exception/token + token regexp=yesa[mz]|ac’h/token + token regexp=yesp?eus|[bp]oa?/token +/pattern +messageLakaet e vez a rannig verb «e» goude an adverb. Ha fellout a rae deoc’h skrivañ suggestionmatch no=2 regexp_match=.(.*) regexp_replace=e$1//suggestion?/message +example type=incorrectAlies markeram/marker eus debret se./example +example type=correctAlies em eus debret se./example +example type=correctAmzer a-walc’h am eus./example + /rule +/rulegroup +rulegroup id=ARAOGENN_E name=araogenn + e + rule +pattern mark_from=3 mark_to=-1 + token postag=SENT_START/ + token postag=P/ + token postag=N.* postag_regexp=yes/ + token regexp=yesa[mz]|ac’h/token + token regexp=yesp?eus|[bp]oa?/token +/pattern +messageLakaet e vez a rannig verb «e» goude ar ranadenn dieeun. Ha fellout a rae deoc’h skrivañ suggestionmatch no=4 regexp_match=.(.*) regexp_replace=e$1//suggestion?/message +example type=incorrectE Breizh markeram/marker eus kavet se./example +example type=correctE Breizh markerem/marker eus kavet se./example + /rule +/rulegroup /category This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. -- Try before you buy = See our experts in action! The most comprehensive online learning library for Microsoft developers is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, Metro Style Apps, more. Free future releases when you subscribe now! http://p.sf.net/sfu/learndevnow-dev2 ___ Languagetool-cvs mailing list Languagetool-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/languagetool-cvs
[LanguageTool] SF.net SVN: languagetool:[6381] trunk/JLanguageTool/src/test/org/ languagetool/rules/patterns/PatternRuleTest.java
Revision: 6381 http://languagetool.svn.sourceforge.net/languagetool/?rev=6381view=rev Author: dominikoeo Date: 2012-01-29 22:23:46 + (Sun, 29 Jan 2012) Log Message: --- - added another sanity check on grammar rules in ant test to find negate=yes with empty strings. Modified Paths: -- trunk/JLanguageTool/src/test/org/languagetool/rules/patterns/PatternRuleTest.java Modified: trunk/JLanguageTool/src/test/org/languagetool/rules/patterns/PatternRuleTest.java === --- trunk/JLanguageTool/src/test/org/languagetool/rules/patterns/PatternRuleTest.java 2012-01-29 19:14:02 UTC (rev 6380) +++ trunk/JLanguageTool/src/test/org/languagetool/rules/patterns/PatternRuleTest.java 2012-01-29 22:23:46 UTC (rev 6381) @@ -120,6 +120,7 @@ element.getString(), element.isRegularExpression(), element.getCaseSensitive(), + element.getNegation(), element.isInflected(), lang, rule.getId() + : + rule.getSubId()); @@ -128,8 +129,9 @@ element.getPOStag() == null ? : element.getPOStag(), element.isPOStagRegularExpression(), element.getCaseSensitive(), + element.getPOSNegation(), false, - lang, rule.getId() + : + rule.getSubId() + (exception in POS tag) ); + lang, rule.getId() + : + rule.getSubId() + (POS tag)); ListElement exceptionElements = new ArrayListElement(); if (element.getExceptionList() != null) { @@ -138,6 +140,7 @@ if (exception.hasNextException() element.getSkipNext() == 0) { System.err.println(The + lang.toString() + rule: + rule.getId() + : + rule.getSubId() + + (exception in token [ + i + ]) + in token [ + i + ] + has no skip=\...\ and yet contains scope=\next\ + so the exception never applies. @@ -152,18 +155,20 @@ exception.getString(), exception.isRegularExpression(), exception.getCaseSensitive(), +exception.getNegation(), exception.isInflected(), lang, -rule.getId() + : + rule.getSubId() + (exception in token [ + i + ]) ); +rule.getId() + : + rule.getSubId()+ (exception in token [ + i + ])); } // Check postag=... of exception is consistent with postag_regexp=... warnIfElementNotKosher( exception.getPOStag() == null ? : exception.getPOStag(), exception.isPOStagRegularExpression(), exception.getCaseSensitive(), + exception.getPOSNegation(), false, lang, - rule.getId() + : + rule.getSubId() + (exception in POS tag of token [ + i + ]) ); + rule.getId() + : + rule.getSubId() + (exception in POS tag of token [ + i + ])); // Search for duplicate exceptions (which are useless). // Since there are 2 nested loops on the list of exceptions, @@ -199,27 +204,27 @@ private static boolean equalException(final Element exception1, final Element exception2) { -String string1 = exception1.getString(); -String string2 = exception2.getString(); +String string1 = exception1.getString() == null ? : exception1.getString(); +String string2 = exception2.getString() == null ? : exception2.getString(); if (!exception1.getCaseSensitive() || !exception2.getCaseSensitive()) { // String comparison is done case insensitive if one or both strings - // are case insensitive, because the case insensive one would imply + // are case insensitive, because the case insensitive one would imply // the case sensitive one. string1 = string1.toLowerCase(); string2 = string2.toLowerCase(); } -final boolean equalStrings = (string1 == null || string2 == null) - ? string1 == string2 : string1.equals(string2); -if (!equalStrings) { - return false; +if (!string1.isEmpty() || !string2.isEmpty()) { + if (!string1.equals(string2)) { +return false; + } } -final String posTag1 = exception1.getPOStag(); -final String posTag2 = exception2.getPOStag(); -final boolean equalPosTags = (posTag1 == null || posTag2 == null) - ? posTag1 == posTag2 : posTag1.equals(posTag2); -if (!equalPosTags) { - return false; +final String posTag1 = exception1.getPOStag() == null ? : exception1.getPOStag(); +final String posTag2 = exception2.getPOStag() == null ? : exception2.getPOStag(); +if (!posTag1.isEmpty() || !posTag2.isEmpty()) { + if (!posTag1.equals(posTag2)) { +return false; + } } // We should not need to check for: @@ -241,6 +246,7
[LanguageTool] SF.net SVN: languagetool:[6382] trunk/JLanguageTool/src/test/org/ languagetool/rules/patterns/PatternRuleTest.java
Revision: 6382 http://languagetool.svn.sourceforge.net/languagetool/?rev=6382view=rev Author: dominikoeo Date: 2012-01-29 23:33:06 + (Sun, 29 Jan 2012) Log Message: --- - change to detect more errors in grammar.xml when doing ant test when an exception implies another one as in: exceptionxx/exception exception postag=Axx/exception In above example, 1st exception implies the 2nd exception so 2nd exception is useless. Modified Paths: -- trunk/JLanguageTool/src/test/org/languagetool/rules/patterns/PatternRuleTest.java Modified: trunk/JLanguageTool/src/test/org/languagetool/rules/patterns/PatternRuleTest.java === --- trunk/JLanguageTool/src/test/org/languagetool/rules/patterns/PatternRuleTest.java 2012-01-29 22:23:46 UTC (rev 6381) +++ trunk/JLanguageTool/src/test/org/languagetool/rules/patterns/PatternRuleTest.java 2012-01-29 23:33:06 UTC (rev 6382) @@ -199,7 +199,11 @@ * Predicate to check whether two exceptions are identical or whether * one exception always implies the other. * - * There is no reason for a token to have two identical exceptions. + * Example #1, useless identical exceptions: + * exceptionxx/exceptionexceptionxx/exception + * + * Example #2, first exception implies the second exception: + * exceptionxx/exceptionexception postag=Axx/exception */ private static boolean equalException(final Element exception1, final Element exception2) @@ -213,7 +217,7 @@ string1 = string1.toLowerCase(); string2 = string2.toLowerCase(); } -if (!string1.isEmpty() || !string2.isEmpty()) { +if (!string1.isEmpty() !string2.isEmpty()) { if (!string1.equals(string2)) { return false; } @@ -221,12 +225,17 @@ final String posTag1 = exception1.getPOStag() == null ? : exception1.getPOStag(); final String posTag2 = exception2.getPOStag() == null ? : exception2.getPOStag(); -if (!posTag1.isEmpty() || !posTag2.isEmpty()) { +if (!posTag1.isEmpty() !posTag2.isEmpty()) { if (!posTag1.equals(posTag2)) { return false; } } +if ( string1.isEmpty() != string2.isEmpty() + posTag1.isEmpty() != posTag2.isEmpty()) { + return false; +} + // We should not need to check for: // - isCaseSensitive() since an exception without isCaseSensitive // imply the one with isCaseSensitive. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. -- Try before you buy = See our experts in action! The most comprehensive online learning library for Microsoft developers is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, Metro Style Apps, more. Free future releases when you subscribe now! http://p.sf.net/sfu/learndevnow-dev2 ___ Languagetool-cvs mailing list Languagetool-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/languagetool-cvs