Revision: 6941
          
http://languagetool.svn.sourceforge.net/languagetool/?rev=6941&view=rev
Author:   dnaber
Date:     2012-05-16 21:32:17 +0000 (Wed, 16 May 2012)
Log Message:
-----------
fix interpretation of marker position when there's a <phraseref>

Modified Paths:
--------------
    
trunk/JLanguageTool/src/java/org/languagetool/rules/patterns/PatternRuleLoader.java

Modified: 
trunk/JLanguageTool/src/java/org/languagetool/rules/patterns/PatternRuleLoader.java
===================================================================
--- 
trunk/JLanguageTool/src/java/org/languagetool/rules/patterns/PatternRuleLoader.java
 2012-05-16 20:52:27 UTC (rev 6940)
+++ 
trunk/JLanguageTool/src/java/org/languagetool/rules/patterns/PatternRuleLoader.java
 2012-05-16 21:32:17 UTC (rev 6941)
@@ -87,6 +87,7 @@
   private String ruleGroupDescription;
   private int startPos = -1;
   private int endPos = -1;
+  private int tokenCountForMarker = 0;
 
   // ===========================================================
   // SAX DocumentHandler methods
@@ -140,8 +141,10 @@
       }
     } else if (PATTERN.equals(qName)) {
       startPattern(attrs);     
+      tokenCountForMarker = 0;
     } else if (AND.equals(qName)) {
       inAndGroup = true;
+      tokenCountForMarker++;
     } else if ("unify".equals(qName)) {
       inUnification = true;           
       uniNegation = YES.equals(attrs.getValue(NEGATE));
@@ -152,6 +155,9 @@
       uTypeList.add(uType);
     } else if (qName.equals(TOKEN)) {
       setToken(attrs);
+      if (!inAndGroup) {
+        tokenCountForMarker++;
+      }
     } else if (qName.equals("marker") && inPattern) {
       startPos = tokenCounter;
     } else if (EXCEPTION.equals(qName)) {
@@ -207,6 +213,7 @@
       phraseId = attrs.getValue("id");
     } else if ("phraseref".equals(qName) && (attrs.getValue("idref") != null)) 
{
       preparePhrase(attrs);
+      tokenCountForMarker++;
     }    
   }
 
@@ -250,7 +257,7 @@
     } else if (qName.equals(TOKEN)) {
       finalizeTokens();
     } else if (qName.equals("marker") && inPattern) {
-      endPos = tokenCounter;
+      endPos = tokenCountForMarker;
     } else if (qName.equals(PATTERN)) {
       checkMarkPositions();
       inPattern = false;
@@ -328,7 +335,7 @@
   private void prepareRule(final PatternRule rule) {
     if (startPos != -1 && endPos != -1) {
       rule.setStartPositionCorrection(startPos);
-      rule.setEndPositionCorrection(endPos - elementList.size());
+      rule.setEndPositionCorrection(endPos - tokenCountForMarker);
     } else {
       rule.setStartPositionCorrection(startPositionCorrection);
       rule.setEndPositionCorrection(endPositionCorrection);

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
[email protected]
https://lists.sourceforge.net/lists/listinfo/languagetool-cvs

Reply via email to