Revision: 7868 http://languagetool.svn.sourceforge.net/languagetool/?rev=7868&view=rev Author: dnaber Date: 2012-08-15 21:45:50 +0000 (Wed, 15 Aug 2012) Log Message: ----------- bugfix: the column count was sometimes totally wrong
Modified Paths: -------------- trunk/JLanguageTool/CHANGES.txt trunk/JLanguageTool/src/java/org/languagetool/JLanguageTool.java trunk/JLanguageTool/src/test/org/languagetool/JLanguageToolTest.java Modified: trunk/JLanguageTool/CHANGES.txt =================================================================== --- trunk/JLanguageTool/CHANGES.txt 2012-08-15 19:59:33 UTC (rev 7867) +++ trunk/JLanguageTool/CHANGES.txt 2012-08-15 21:45:50 UTC (rev 7868) @@ -70,6 +70,9 @@ -The word tokenizer now considers the following characters as word separator: | (pipe) and` (backtick). + -bugfix: the column count was sometimes totally wrong + + 1.8 (2012-06-30) -Greek: Modified: trunk/JLanguageTool/src/java/org/languagetool/JLanguageTool.java =================================================================== --- trunk/JLanguageTool/src/java/org/languagetool/JLanguageTool.java 2012-08-15 19:59:33 UTC (rev 7867) +++ trunk/JLanguageTool/src/java/org/languagetool/JLanguageTool.java 2012-08-15 21:45:50 UTC (rev 7868) @@ -571,7 +571,7 @@ lineCount += countLineBreaks(sentence); // calculate matching column: - final int lineBreakPos = sentence.indexOf('\n'); + final int lineBreakPos = sentence.lastIndexOf('\n'); if (lineBreakPos == -1) { columnCount += sentence.length(); } else { @@ -581,7 +581,7 @@ columnCount--; } } else { - columnCount = 1; + columnCount = sentence.length() - lineBreakPos; } } } @@ -658,21 +658,15 @@ * @param columnCount Current column number * @param lineCount Current line number * @param sentence The text being checked - * @return - * The RuleMatch object with adjustments. + * @return The RuleMatch object with adjustments. */ public RuleMatch adjustRuleMatchPos(final RuleMatch rm, int sentLen, int columnCount, int lineCount, final String sentence) { final RuleMatch thisMatch = new RuleMatch(rm.getRule(), - rm.getFromPos() + sentLen, rm.getToPos() - + sentLen, rm.getMessage(), rm - .getShortMessage()); - thisMatch.setSuggestedReplacements(rm - .getSuggestedReplacements()); - final String sentencePartToError = sentence.substring(0, rm - .getFromPos()); - final String sentencePartToEndOfError = sentence.substring(0, - rm.getToPos()); + rm.getFromPos() + sentLen, rm.getToPos() + sentLen, rm.getMessage(), rm.getShortMessage()); + thisMatch.setSuggestedReplacements(rm.getSuggestedReplacements()); + final String sentencePartToError = sentence.substring(0, rm.getFromPos()); + final String sentencePartToEndOfError = sentence.substring(0,rm.getToPos()); final int lastLineBreakPos = sentencePartToError.lastIndexOf('\n'); final int column; final int endColumn; @@ -681,8 +675,7 @@ } else { column = sentencePartToError.length() - lastLineBreakPos; } - final int lastLineBreakPosInError = sentencePartToEndOfError - .lastIndexOf('\n'); + final int lastLineBreakPosInError = sentencePartToEndOfError.lastIndexOf('\n'); if (lastLineBreakPosInError == -1) { endColumn = sentencePartToEndOfError.length() + columnCount; } else { Modified: trunk/JLanguageTool/src/test/org/languagetool/JLanguageToolTest.java =================================================================== --- trunk/JLanguageTool/src/test/org/languagetool/JLanguageToolTest.java 2012-08-15 19:59:33 UTC (rev 7867) +++ trunk/JLanguageTool/src/test/org/languagetool/JLanguageToolTest.java 2012-08-15 21:45:50 UTC (rev 7868) @@ -105,6 +105,26 @@ assertEquals(1, match.getColumn()); } + public void testPositionsWithEnglish() throws IOException { + final JLanguageTool tool = new JLanguageTool(Language.AMERICAN_ENGLISH); + final List<RuleMatch> matches = tool.check("A sentence with no period\n" + + "A sentence. A typoh."); + assertEquals(1, matches.size()); + final RuleMatch match = matches.get(0); + assertEquals(1, match.getLine()); + assertEquals(15, match.getColumn()); + } + + public void testPositionsWithEnglishTwoLineBreaks() throws IOException { + final JLanguageTool tool = new JLanguageTool(Language.AMERICAN_ENGLISH); + final List<RuleMatch> matches = tool.check("This sentence.\n\n" + + "A sentence. A typoh."); + assertEquals(1, matches.size()); + final RuleMatch match = matches.get(0); + assertEquals(2, match.getLine()); + assertEquals(14, match.getColumn()); // TODO: should actually be 15, as in testPositionsWithEnglish() + } + public void testDutch() throws IOException { final JLanguageTool tool = new JLanguageTool(Language.DUTCH); tool.activateDefaultPatternRules(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Languagetool-cvs mailing list Languagetool-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/languagetool-cvs