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