From d4da4805a836e1124003efaf04b0c65ebb5af882 Mon Sep 17 00:00:00 2001 From: reger Date: Sat, 25 Jun 2016 02:46:44 +0200 Subject: [PATCH] internal wiki code, require header line to start with markup (to allow something like "one=two" as text) + incl. test case --- source/net/yacy/data/wiki/WikiCode.java | 12 ++++++++- .../java/net/yacy/data/wiki/WikiCodeTest.java | 25 ++++++++++++++++++- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/source/net/yacy/data/wiki/WikiCode.java b/source/net/yacy/data/wiki/WikiCode.java index 7ca013074..f28072213 100644 --- a/source/net/yacy/data/wiki/WikiCode.java +++ b/source/net/yacy/data/wiki/WikiCode.java @@ -937,7 +937,17 @@ public class WikiCode extends AbstractWikiParser implements WikiParser { //extra treatment for headlines if (Arrays.binarySearch(HEADLINE_TAGS, tags.openWiki) >= 0) { - processHeadline(stringBuilder, firstPosition, tags, secondPosition, direlem); + // require line starts with headline markup (hdr e.g. " == Title == " but not "Seven = six plus one" ) + int i = 0; + boolean beginsWith = true; + while (i < firstPosition) { + if (stringBuilder.charAt(i) > ' ') { + beginsWith = false; + break; + } + i++; + } + if (beginsWith) processHeadline(stringBuilder, firstPosition, tags, secondPosition, direlem); } else { final int oldLength = stringBuilder.length(); stringBuilder.replace(firstPosition, firstPosition + tags.openWikiLength, tags.openHTML); diff --git a/test/java/net/yacy/data/wiki/WikiCodeTest.java b/test/java/net/yacy/data/wiki/WikiCodeTest.java index c4b75a511..5a2d4e08d 100644 --- a/test/java/net/yacy/data/wiki/WikiCodeTest.java +++ b/test/java/net/yacy/data/wiki/WikiCodeTest.java @@ -1,5 +1,6 @@ package net.yacy.data.wiki; +import java.io.BufferedReader; import org.junit.Test; import static org.junit.Assert.*; @@ -32,4 +33,26 @@ public class WikiCodeTest { } } -} \ No newline at end of file + /** + * test header wiki markup + */ + @Test + public void testProcessLineOfWikiCode() { + String[] hdrTeststr = new String[]{ // ok test header + "== Header ==", "==Header=="}; + + String[] nohdrTeststr = new String[]{ // wrong test header + "Text of = Header =", "One=Two"}; + + WikiCode wc = new WikiCode(); + + for (String s : hdrTeststr) { // test ok header + String erg = wc.transform("8090", s); + assertTrue("

tag expected:"+erg, erg.contains("

")); + } + for (String s : nohdrTeststr) { // test wrong header + String erg = wc.transform("8090", s); + assertFalse("no header tag expected:"+erg, erg.contains("

")); + } + } +}