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

Reply via email to