You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by mi...@apache.org on 2011/10/10 20:14:04 UTC
svn commit: r1181109 - in /tika/trunk/tika-parsers/src:
main/java/org/apache/tika/parser/rtf/TextExtractor.java
test/java/org/apache/tika/parser/rtf/RTFParserTest.java
test/resources/test-documents/testRTFIgnoredControlWord.rtf
Author: mikemccand
Date: Mon Oct 10 18:14:03 2011
New Revision: 1181109
URL: http://svn.apache.org/viewvc?rev=1181109&view=rev
Log:
TIKA-748: ignore \* if it's not right after group start {
Added:
tika/trunk/tika-parsers/src/test/resources/test-documents/testRTFIgnoredControlWord.rtf (with props)
Modified:
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/rtf/TextExtractor.java
tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/rtf/RTFParserTest.java
Modified: tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/rtf/TextExtractor.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/rtf/TextExtractor.java?rev=1181109&r1=1181108&r2=1181109&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/rtf/TextExtractor.java (original)
+++ tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/rtf/TextExtractor.java Mon Oct 10 18:14:03 2011
@@ -86,6 +86,8 @@ final class TextExtractor {
private GroupState groupState = new GroupState();
private boolean inHeader = true;
+ private int chIndex;
+ private int lastGroupStart;
private int fontTableState;
private int fontTableDepth;
@@ -336,6 +338,7 @@ final class TextExtractor {
pushBack = -2;
} else {
b = in.read();
+ chIndex++;
}
if (b == -1) {
break;
@@ -625,7 +628,10 @@ final class TextExtractor {
// after the 1987 RTF spec). Note that
// sometimes we un-ignore within this group, eg
// when handling upr escape.
- groupState.ignore = true;
+ if (chIndex == lastGroupStart+2) {
+ // Only ignore if \* comes right after {:
+ groupState.ignore = true;
+ }
break;
case '-':
// Optional hyphen -> unicode SOFT HYPHEN
@@ -1007,6 +1013,8 @@ final class TextExtractor {
uprState = 1;
groupState.ignore = true;
}
+
+ lastGroupStart = chIndex;
}
// Pop current GroupState
Modified: tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/rtf/RTFParserTest.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/rtf/RTFParserTest.java?rev=1181109&r1=1181108&r2=1181109&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/rtf/RTFParserTest.java (original)
+++ tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/rtf/RTFParserTest.java Mon Oct 10 18:14:03 2011
@@ -293,6 +293,10 @@ public class RTFParserTest extends TikaT
assertContains("our most <a href=\"http://r.office.microsoft.com/r/rlidwelcomeFAQ?clid=1033\">frequently asked questions</a>", content);
}
+ public void testIgnoredControlWord() throws Exception {
+ assertContains("<p>The quick brown fox jumps over the lazy dog</p>", getXML("testRTFIgnoredControlWord.rtf").xml);
+ }
+
private Result getResult(String filename) throws Exception {
File file = getResourceAsFile("/test-documents/" + filename);
Added: tika/trunk/tika-parsers/src/test/resources/test-documents/testRTFIgnoredControlWord.rtf
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/resources/test-documents/testRTFIgnoredControlWord.rtf?rev=1181109&view=auto
==============================================================================
--- tika/trunk/tika-parsers/src/test/resources/test-documents/testRTFIgnoredControlWord.rtf (added)
+++ tika/trunk/tika-parsers/src/test/resources/test-documents/testRTFIgnoredControlWord.rtf Mon Oct 10 18:14:03 2011
@@ -0,0 +1,17 @@
+{\rtf1\ansi\deff1\adeflang1025
+{\fonttbl{\f0\froman\fprq2\fcharset0 Times;}{\f1\froman\fprq2\fcharset0 Times New Roman;}{\f2\fmodern\fprq1\fcharset0 Courier New;}{\f3\froman\fprq2\fcharset0 Times New Roman;}{\f4\fnil\fprq2\fcharset0 Interface User;}{\f5\fnil\fprq2\fcharset0 Lucidasans;}{\f6\fnil\fprq0\fcharset0 Lucidasans;}}
+{\colortbl;\red0\green0\blue0;\red0\green0\blue128;\red128\green128\blue128;}
+{\stylesheet{\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af5\afs24\lang255\ltrch\dbch\af4\afs24\langfe255\loch\f1\fs24\lang1033\snext1 Default;}
+{\s2\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs24\lang255\ltrch\dbch\afs24\langfe255\loch\f1\fs24\lang1033\sbasedon1\snext2 Text body;}
+{\s3\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af6\afs24\lang255\ltrch\dbch\af1\afs24\langfe255\loch\f1\fs24\lang1033\sbasedon2\snext3 List;}
+{\s4\sb120\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af6\afs20\lang255\ai\ltrch\dbch\afs20\langfe255\ai\loch\f1\fs20\lang1033\i\sbasedon1\snext4 Caption;}
+{\s5\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af6\afs24\lang255\ltrch\dbch\afs24\langfe255\loch\f1\fs24\lang1033\sbasedon1\snext5 Index;}
+{\*\cs7\cf0\rtlch\af2\afs24\lang255\ltrch\dbch\af2\afs24\langfe255\loch\f2\fs24\lang1033 Teletype;}
+{\*\cs8\cf2\ul\rtlch\afs24\lang255\ltrch\dbch\afs24\langfe255\loch\fs24\lang1033 Internet Link;}
+}
+{\info{\title test rft document}{\subject tests}{\creatim\yr2004\mo9\dy20\hr19\min36}{\revtim\yr1601\mo1\dy1\hr0\min0}{\printim\yr1601\mo1\dy1\hr0\min0}{\comment StarWriter}{\vern6450}}\deftab709
+{\*\pgdsctbl
+{\pgdsc0\pgdscuse195\pgwsxn11905\pghsxn16837\marglsxn1800\margrsxn1800\margtsxn1440\margbsxn1440\pgdscnxt0 Default;}}
+{\*\pgdscno0}\paperh16837\paperw11905\margl1800\margr1800\margt1440\margb1440\sectd\sbknone\pgwsxn11905\pghsxn16837\marglsxn1800\margrsxn1800\margtsxn1440\margbsxn1440\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
+\pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af4\afs24\langfe255\loch\f1\fs24\lang1033{\loch\f2\fs24\lang1033\i0\b0\*\cs7\cf0\rtlch\ltrch\dbch\loch\f2\fs24\lang1033 The quick brown fox jumps over the lazy dog}
+\par }
\ No newline at end of file
Propchange: tika/trunk/tika-parsers/src/test/resources/test-documents/testRTFIgnoredControlWord.rtf
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tika/trunk/tika-parsers/src/test/resources/test-documents/testRTFIgnoredControlWord.rtf
------------------------------------------------------------------------------
svn:executable = *