*) beautifying code and a little comment

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@1401 6c8d7289-2bf4-0310-a012-ef5d649a1542
pull/1/head
low012 19 years ago
parent 319f8ffb18
commit ef22fa8bf2

@ -131,7 +131,7 @@ public class wikiCode {
//This array contains codes (see http://mindprod.com/jgloss/unicode.html for details) and //This array contains codes (see http://mindprod.com/jgloss/unicode.html for details) and
//patterns that will be replaced. To add new codes or patterns, just put them at the end //patterns that will be replaced. To add new codes or patterns, just put them at the end
//of the list. //of the list. Codes or patterns in this list can not be escaped with [= or <pre>
public static String[] htmlentities={ public static String[] htmlentities={
// Ampersands _have_ to be replaced first. If they were replaced later, // Ampersands _have_ to be replaced first. If they were replaced later,
// other replaced characters containing ampersands would get messed up. // other replaced characters containing ampersands would get messed up.
@ -276,176 +276,176 @@ public class wikiCode {
tail = tail + "</blockquote>"; tail = tail + "</blockquote>";
result = result.substring(1); result = result.substring(1);
} }
result = head + result + tail; result = head + result + tail;
} }
// end contrib [MN] // end contrib [MN]
// format headers // format headers
if ((p0 = result.indexOf("====")) >= 0) { if ((p0 = result.indexOf("====")) >= 0) {
p1 = result.indexOf("====", p0 + 4); p1 = result.indexOf("====", p0 + 4);
if (p1 >= 0) result = result.substring(0, p0) + "<h4>" + if (p1 >= 0) result = result.substring(0, p0) + "<h4>" +
result.substring(p0 + 4, p1) + "</h4>" + result.substring(p0 + 4, p1) + "</h4>" +
result.substring(p1 + 4); result.substring(p1 + 4);
} }
if ((p0 = result.indexOf("===")) >= 0) { if ((p0 = result.indexOf("===")) >= 0) {
p1 = result.indexOf("===", p0 + 3); p1 = result.indexOf("===", p0 + 3);
if (p1 >= 0) result = result.substring(0, p0) + "<h3>" + if (p1 >= 0) result = result.substring(0, p0) + "<h3>" +
result.substring(p0 + 3, p1) + "</h3>" + result.substring(p0 + 3, p1) + "</h3>" +
result.substring(p1 + 3); result.substring(p1 + 3);
} }
if ((p0 = result.indexOf("==")) >= 0) { if ((p0 = result.indexOf("==")) >= 0) {
p1 = result.indexOf("==", p0 + 2); p1 = result.indexOf("==", p0 + 2);
if (p1 >= 0) result = result.substring(0, p0) + "<h2>" + if (p1 >= 0) result = result.substring(0, p0) + "<h2>" +
result.substring(p0 + 2, p1) + "</h2>" + result.substring(p0 + 2, p1) + "</h2>" +
result.substring(p1 + 2); result.substring(p1 + 2);
} }
if ((p0 = result.indexOf("'''''")) >= 0) {
p1 = result.indexOf("'''''", p0 + 5);
if (p1 >= 0) result = result.substring(0, p0) + "<b><i>" +
result.substring(p0 + 5, p1) + "</i></b>" +
result.substring(p1 + 5);
}
if ((p0 = result.indexOf("'''")) >= 0) {
p1 = result.indexOf("'''", p0 + 3);
if (p1 >= 0) result = result.substring(0, p0) + "<b>" +
result.substring(p0 + 3, p1) + "</b>" +
result.substring(p1 + 3);
}
if ((p0 = result.indexOf("''")) >= 0) {
p1 = result.indexOf("''", p0 + 2);
if (p1 >= 0) result = result.substring(0, p0) + "<i>" +
result.substring(p0 + 2, p1) + "</i>" +
result.substring(p1 + 2);
}
//* unorderd Lists contributed by [AS] if ((p0 = result.indexOf("'''''")) >= 0) {
//** Sublist p1 = result.indexOf("'''''", p0 + 5);
if(result.startsWith(ListLevel + "*")){ //more stars if (p1 >= 0) result = result.substring(0, p0) + "<b><i>" +
p0 = result.indexOf(ListLevel); result.substring(p0 + 5, p1) + "</i></b>" +
p1 = result.length(); result.substring(p1 + 5);
result = "<ul>" + serverCore.crlfString + }
"<li>" + if ((p0 = result.indexOf("'''")) >= 0) {
result.substring(ListLevel.length() + 1, p1) + p1 = result.indexOf("'''", p0 + 3);
"</li>"; if (p1 >= 0) result = result.substring(0, p0) + "<b>" +
ListLevel += "*"; result.substring(p0 + 3, p1) + "</b>" +
}else if(ListLevel.length() > 0 && result.startsWith(ListLevel)){ //equal number of stars result.substring(p1 + 3);
p0 = result.indexOf(ListLevel); }
p1 = result.length(); if ((p0 = result.indexOf("''")) >= 0) {
result = "<li>" + p1 = result.indexOf("''", p0 + 2);
result.substring(ListLevel.length(), p1) + if (p1 >= 0) result = result.substring(0, p0) + "<i>" +
"</li>"; result.substring(p0 + 2, p1) + "</i>" +
}else if(ListLevel.length() > 0){ //less stars result.substring(p1 + 2);
int i = ListLevel.length();
String tmp = "";
while(! result.startsWith(ListLevel.substring(0,i)) ){
tmp += "</ul>";
i--;
} }
ListLevel = ListLevel.substring(0,i);
p0 = ListLevel.length();
p1 = result.length();
if(ListLevel.length() > 0){ //* unorderd Lists contributed by [AS]
result = tmp + //** Sublist
if(result.startsWith(ListLevel + "*")){ //more stars
p0 = result.indexOf(ListLevel);
p1 = result.length();
result = "<ul>" + serverCore.crlfString +
"<li>" + "<li>" +
result.substring(p0, p1) + result.substring(ListLevel.length() + 1, p1) +
"</li>"; "</li>";
}else{ ListLevel += "*";
result = tmp + result.substring(p0, p1); }else if(ListLevel.length() > 0 && result.startsWith(ListLevel)){ //equal number of stars
p0 = result.indexOf(ListLevel);
p1 = result.length();
result = "<li>" +
result.substring(ListLevel.length(), p1) +
"</li>";
}else if(ListLevel.length() > 0){ //less stars
int i = ListLevel.length();
String tmp = "";
while(! result.startsWith(ListLevel.substring(0,i)) ){
tmp += "</ul>";
i--;
}
ListLevel = ListLevel.substring(0,i);
p0 = ListLevel.length();
p1 = result.length();
if(ListLevel.length() > 0){
result = tmp +
"<li>" +
result.substring(p0, p1) +
"</li>";
}else{
result = tmp + result.substring(p0, p1);
}
} }
}
//# sorted Lists contributed by [AS] //# sorted Lists contributed by [AS]
//## Sublist //## Sublist
if(result.startsWith(numListLevel + "#")){ //more # if(result.startsWith(numListLevel + "#")){ //more #
p0 = result.indexOf(numListLevel); p0 = result.indexOf(numListLevel);
p1 = result.length(); p1 = result.length();
result = "<ol>" + serverCore.crlfString + result = "<ol>" + serverCore.crlfString +
"<li>" + "<li>" +
result.substring(numListLevel.length() + 1, p1) + result.substring(numListLevel.length() + 1, p1) +
"</li>"; "</li>";
numListLevel += "#"; numListLevel += "#";
}else if(numListLevel.length() > 0 && result.startsWith(numListLevel)){ //equal number of # }else if(numListLevel.length() > 0 && result.startsWith(numListLevel)){ //equal number of #
p0 = result.indexOf(numListLevel); p0 = result.indexOf(numListLevel);
p1 = result.length(); p1 = result.length();
result = "<li>" + result = "<li>" +
result.substring(numListLevel.length(), p1) + result.substring(numListLevel.length(), p1) +
"</li>"; "</li>";
}else if(numListLevel.length() > 0){ //less # }else if(numListLevel.length() > 0){ //less #
int i = numListLevel.length(); int i = numListLevel.length();
String tmp = ""; String tmp = "";
while(! result.startsWith(numListLevel.substring(0,i)) ){ while(! result.startsWith(numListLevel.substring(0,i)) ){
tmp += "</ol>"; tmp += "</ol>";
i--; i--;
} }
numListLevel = numListLevel.substring(0,i); numListLevel = numListLevel.substring(0,i);
p0 = numListLevel.length(); p0 = numListLevel.length();
p1 = result.length(); p1 = result.length();
if(numListLevel.length() > 0){ if(numListLevel.length() > 0){
result = tmp + result = tmp +
"<li>" + "<li>" +
result.substring(p0, p1) + result.substring(p0, p1) +
"</li>"; "</li>";
}else{ }else{
result = tmp + result.substring(p0, p1); result = tmp + result.substring(p0, p1);
} }
}
// end contrib [AS]
//* definition Lists contributed by [MN] based on unordered list code by [AS]
if(result.startsWith(defListLevel + ";")){ //more semicolons
String dt = "";
String dd = "";
p0 = result.indexOf(defListLevel);
p1 = result.length();
String resultCopy = result.substring(defListLevel.length() + 1, p1);
if((p0 = resultCopy.indexOf(":")) > 0){
dt = resultCopy.substring(0,p0);
dd = resultCopy.substring(p0+1);
result = "<dl>" + "<dt>" + dt + "</dt>" + "<dd>" + dd;
defList = true;
}
defListLevel += ";";
}else if(defListLevel.length() > 0 && result.startsWith(defListLevel)){ //equal number of semicolons
String dt = "";
String dd = "";
p0 = result.indexOf(defListLevel);
p1 = result.length();
String resultCopy = result.substring(defListLevel.length(), p1);
if((p0 = resultCopy.indexOf(":")) > 0){
dt = resultCopy.substring(0,p0);
dd = resultCopy.substring(p0+1);
result = "<dt>" + dt + "</dt>" + "<dd>" + dd;
defList = true;
}
}else if(defListLevel.length() > 0){ //less semicolons
String dt = "";
String dd = "";
int i = defListLevel.length();
String tmp = "";
while(! result.startsWith(defListLevel.substring(0,i)) ){
tmp += "</dd></dl>";
i--;
} }
defListLevel = defListLevel.substring(0,i); // end contrib [AS]
p0 = defListLevel.length();
p1 = result.length(); //* definition Lists contributed by [MN] based on unordered list code by [AS]
if(defListLevel.length() > 0){ if(result.startsWith(defListLevel + ";")){ //more semicolons
String resultCopy = result.substring(p0, p1); String dt = "";
String dd = "";
p0 = result.indexOf(defListLevel);
p1 = result.length();
String resultCopy = result.substring(defListLevel.length() + 1, p1);
if((p0 = resultCopy.indexOf(":")) > 0){ if((p0 = resultCopy.indexOf(":")) > 0){
dt = resultCopy.substring(0,p0); dt = resultCopy.substring(0,p0);
dd = resultCopy.substring(p0+1); dd = resultCopy.substring(p0+1);
result = tmp + "<dt>" + dt + "</dt>" + "<dd>" + dd; result = "<dl>" + "<dt>" + dt + "</dt>" + "<dd>" + dd;
defList = true; defList = true;
} }
defListLevel += ";";
}else if(defListLevel.length() > 0 && result.startsWith(defListLevel)){ //equal number of semicolons
String dt = "";
String dd = "";
p0 = result.indexOf(defListLevel);
p1 = result.length();
String resultCopy = result.substring(defListLevel.length(), p1);
if((p0 = resultCopy.indexOf(":")) > 0){
dt = resultCopy.substring(0,p0);
dd = resultCopy.substring(p0+1);
result = "<dt>" + dt + "</dt>" + "<dd>" + dd;
defList = true;
}
}else if(defListLevel.length() > 0){ //less semicolons
String dt = "";
String dd = "";
int i = defListLevel.length();
String tmp = "";
while(! result.startsWith(defListLevel.substring(0,i)) ){
tmp += "</dd></dl>";
i--;
}
defListLevel = defListLevel.substring(0,i);
p0 = defListLevel.length();
p1 = result.length();
if(defListLevel.length() > 0){
String resultCopy = result.substring(p0, p1);
if((p0 = resultCopy.indexOf(":")) > 0){
dt = resultCopy.substring(0,p0);
dd = resultCopy.substring(p0+1);
result = tmp + "<dt>" + dt + "</dt>" + "<dd>" + dd;
defList = true;
}
}else{ }else{
result = tmp + result.substring(p0, p1); result = tmp + result.substring(p0, p1);
} }
} }
// end contrib [MN] // end contrib [MN]
@ -537,109 +537,102 @@ public class wikiCode {
} }
} }
//escape code ([=...=]) contributed by [MN] //escape code ([=...=]) contributed by [MN]
//both [= and =] in the same line //both [= and =] in the same line
else if(((p0 = result.indexOf("[="))>=0)&&((p1 = result.indexOf("=]"))>0)&&(!(preformatted))){ else if(((p0 = result.indexOf("[="))>=0)&&((p1 = result.indexOf("=]"))>0)&&(!(preformatted))){
//if(p0 < p1){ String escapeText = result.substring(p0+2,p1);
String escapeText = result.substring(p0+2,p1);
//BUGS TO BE FIXED: [=[=text=]=] does not work properly:
//BUGS TO BE FIXED: [=[=text=]=] does not work properly: //[=[= undx=]x=] should resolve as [= undx=]x, but resolves as [= undxx=]
//[=[= undx=]x=] should resolve as [= undx=]x, but resolves as [= undxx=] //ALSO [=[= und =]=] [= und =] leads to an exception
//ALSO [=[= und =]=] [= und =] leads to an exception //
// //handlicg cases where the text inside [= and =] also contains
//handlicg cases where the text inside [= and =] also contains //[= and =]. Example: [=[=...=]=]
//[= and =]. Example: [=[=...=]=]
//if(escapeText)
//else{
result = transformLine(result.substring(0,p0).replaceAll("!esc!", "!esc!!")+"!esc!txt!"+result.substring(p1+2).replaceAll("!esc!", "!esc!!"), switchboard); result = transformLine(result.substring(0,p0).replaceAll("!esc!", "!esc!!")+"!esc!txt!"+result.substring(p1+2).replaceAll("!esc!", "!esc!!"), switchboard);
result = result.replaceAll("!esc!txt!", escapeText); result = result.replaceAll("!esc!txt!", escapeText);
result = result.replaceAll("!esc!!", "!esc!"); result = result.replaceAll("!esc!!", "!esc!");
//} }
//}
}
//start [= //start [=
else if(((p0 = result.indexOf("[="))>=0)&&(!escapeSpan)&&(!preformatted)){ else if(((p0 = result.indexOf("[="))>=0)&&(!escapeSpan)&&(!preformatted)){
escape = true; //prevent surplus line breaks escape = true; //prevent surplus line breaks
escaped = true; //prevents <pre> being parsed escaped = true; //prevents <pre> being parsed
String bq = ""; //gets filled with <blockquote>s as needed String bq = ""; //gets filled with <blockquote>s as needed
String escapeText = result.substring(p0+2); String escapeText = result.substring(p0+2);
//taking care of indented lines //taking care of indented lines
while(result.substring(escindented,p0).startsWith(":")){ while(result.substring(escindented,p0).startsWith(":")){
escindented++; escindented++;
bq = bq + "<blockquote>"; bq = bq + "<blockquote>";
}
result = transformLine(result.substring(escindented,p0).replaceAll("!esc!", "!esc!!")+"!esc!txt!", switchboard);
result = bq + result.replaceAll("!esc!txt!", escapeText);
escape = false;
escapeSpan = true;
} }
result = transformLine(result.substring(escindented,p0).replaceAll("!esc!", "!esc!!")+"!esc!txt!", switchboard);
result = bq + result.replaceAll("!esc!txt!", escapeText);
escape = false;
escapeSpan = true;
}
//end =] //end =]
else if(((p0 = result.indexOf("=]"))>=0)&&(escapeSpan)&&(!preformatted)){ else if(((p0 = result.indexOf("=]"))>=0)&&(escapeSpan)&&(!preformatted)){
escapeSpan = false; escapeSpan = false;
String bq = ""; //gets filled with </blockquote>s as neede String bq = ""; //gets filled with </blockquote>s as neede
String escapeText = result.substring(0,p0); String escapeText = result.substring(0,p0);
//taking care of indented lines //taking care of indented lines
while(escindented > 0){ while(escindented > 0){
bq = bq + "</blockquote>"; bq = bq + "</blockquote>";
escindented--; escindented--;
}
result = transformLine("!esc!txt!"+result.substring(p0+2).replaceAll("!esc!", "!esc!!"), switchboard);
result = result.replaceAll("!esc!txt!", escapeText) + bq;
escaped = false;
} }
result = transformLine("!esc!txt!"+result.substring(p0+2).replaceAll("!esc!", "!esc!!"), switchboard); //end contrib [MN]
result = result.replaceAll("!esc!txt!", escapeText) + bq;
escaped = false;
}
//end contrib [MN]
//preformatted code (<pre>...</pre>) contributed by [MN] //preformatted code (<pre>...</pre>) contributed by [MN]
//implementation very similar to escape code (see above) //implementation very similar to escape code (see above)
//both <pre> and </pre> in the same line //both <pre> and </pre> in the same line
else if(((p0 = result.indexOf("&lt;pre&gt;"))>=0)&&((p1 = result.indexOf("&lt;/pre&gt;"))>0)&&(!(escaped))){ else if(((p0 = result.indexOf("&lt;pre&gt;"))>=0)&&((p1 = result.indexOf("&lt;/pre&gt;"))>0)&&(!(escaped))){
//if(p0 < p1){
String preformattedText = "<pre style=\"border:dotted;border-width:thin\">"+result.substring(p0+11,p1)+"</pre>"; String preformattedText = "<pre style=\"border:dotted;border-width:thin\">"+result.substring(p0+11,p1)+"</pre>";
result = transformLine(result.substring(0,p0).replaceAll("!pre!", "!pre!!")+"!pre!txt!"+result.substring(p1+12).replaceAll("!pre!", "!pre!!"), switchboard); result = transformLine(result.substring(0,p0).replaceAll("!pre!", "!pre!!")+"!pre!txt!"+result.substring(p1+12).replaceAll("!pre!", "!pre!!"), switchboard);
result = result.replaceAll("!pre!txt!", preformattedText); result = result.replaceAll("!pre!txt!", preformattedText);
result = result.replaceAll("!pre!!", "!pre!"); result = result.replaceAll("!pre!!", "!pre!");
//}
}
//start <pre>
else if(((p0 = result.indexOf("&lt;pre&gt;"))>=0)&&(!preformattedSpan)&&(!escaped)){
preformatted = true; //prevent surplus line breaks
String bq =""; //gets filled with <blockquote>s as needed
String preformattedText = "<pre style=\"border:dotted;border-width:thin\">"+result.substring(p0+11);
//taking care of indented lines
while(result.substring(preindented,p0).startsWith(":")){
preindented++;
bq = bq + "<blockquote>";
} }
result = transformLine(result.substring(preindented,p0).replaceAll("!pre!", "!pre!!")+"!pre!txt!", switchboard);
result = bq + result.replaceAll("!pre!txt!", preformattedText);
result = result.replaceAll("!pre!!", "!pre!");
preformattedSpan = true;
}
//end </pre> //start <pre>
else if(((p0 = result.indexOf("&lt;/pre&gt;"))>=0)&&(preformattedSpan)&&(!escaped)){ else if(((p0 = result.indexOf("&lt;pre&gt;"))>=0)&&(!preformattedSpan)&&(!escaped)){
preformattedSpan = false; preformatted = true; //prevent surplus line breaks
String bq = ""; //gets filled with </blockquote>s as needed String bq =""; //gets filled with <blockquote>s as needed
String preformattedText = result.substring(0,p0)+"</pre>"; String preformattedText = "<pre style=\"border:dotted;border-width:thin\">"+result.substring(p0+11);
//taking care of indented lines //taking care of indented lines
while (preindented > 0){ while(result.substring(preindented,p0).startsWith(":")){
bq = bq + "</blockquote>"; preindented++;
preindented--; bq = bq + "<blockquote>";
}
result = transformLine(result.substring(preindented,p0).replaceAll("!pre!", "!pre!!")+"!pre!txt!", switchboard);
result = bq + result.replaceAll("!pre!txt!", preformattedText);
result = result.replaceAll("!pre!!", "!pre!");
preformattedSpan = true;
} }
result = transformLine("!pre!txt!"+result.substring(p0+12).replaceAll("!pre!", "!pre!!"), switchboard);
result = result.replaceAll("!pre!txt!", preformattedText) + bq;
result = result.replaceAll("!pre!!", "!pre!");
preformatted = false;
}
//end contrib [MN]
replaced = false; //end </pre>
if ((result.endsWith("</li>"))||(defList)||(escape)||(preformatted)) return result; else if(((p0 = result.indexOf("&lt;/pre&gt;"))>=0)&&(preformattedSpan)&&(!escaped)){
return result + "<br>"; preformattedSpan = false;
String bq = ""; //gets filled with </blockquote>s as needed
String preformattedText = result.substring(0,p0)+"</pre>";
//taking care of indented lines
while (preindented > 0){
bq = bq + "</blockquote>";
preindented--;
}
result = transformLine("!pre!txt!"+result.substring(p0+12).replaceAll("!pre!", "!pre!!"), switchboard);
result = result.replaceAll("!pre!txt!", preformattedText) + bq;
result = result.replaceAll("!pre!!", "!pre!");
preformatted = false;
}
//end contrib [MN]
replaced = false;
if ((result.endsWith("</li>"))||(defList)||(escape)||(preformatted)) return result;
return result + "<br>";
} }
/* /*

Loading…
Cancel
Save