internal wiki code, require header line to start with markup

(to allow something like  "one=two"  as text)
+ incl. test case
pull/60/head
reger 9 years ago
parent 1122c9f0e8
commit d4da4805a8

@ -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);

@ -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 {
}
}
}
/**
* 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("<h2> tag expected:"+erg, erg.contains("<h2>"));
}
for (String s : nohdrTeststr) { // test wrong header
String erg = wc.transform("8090", s);
assertFalse("no header tag expected:"+erg, erg.contains("<h1>"));
}
}
}

Loading…
Cancel
Save