Wiki-Konverter#
Der Wiki-Konverter ist ein Perl-Script, das UseModWiki-Seiten in JspWiki-Seiten umwandelt. Bisher habe ich eine Beta-Version, die ich hier mal poste. Ich bitte um Tests und Anmerkungen, was noch fehlt. Ein bekanntes Problem sind Einrückungen mit ":".
Das Programm editiert nur die Seiten, die Peter verändert (gewrappt) und ins JspWiki kopiert hat. Ich hoffe, daß ich möglichst viele der von uns benutzten Formatierungen erwischt habe und dabei nichts "gefressen" habe. Besonders empfindlich sind z.B. Zeilenvorschübe, deren Verschwinden einiges durcheinanderbringen kann. Wenn hier keiner meckert, mache ich dann eine Version, die über das ganze Wiki geht.
Version 0.2#
#!/usr/bin/perl
$_=join '',<>;
unless (/^Dies.*?{{{/s){
# ist kein unbearbeiteter Text
print $_;
exit;
}
# Hilfsvariable, weil ich das Skript sonst nicht ins Wiki stellen kann
$klammer='}' x 3;
# erstmal den Header und Footer wegmachen, die Peter angefügt hat
s/^Dies.*?{{{//s;
s/}{3}$//;
# Die gewrapten Zeilen wieder zusammenbauen
#s/([^\n=-])\n([^* \n=-])/$1 $2/g;
s/(?<!(.\n|.=|--))\n([^* \n=-])/$1 $2/g;
# manchmal hat Peter das = am Ende in eine eigene Zeile geschrieben
s/(?<!(.\n|.=|--))\n(=+\n)/$1 $2/g;
# Titelzeilen
s/^= (.*) =$/\!!! $1/mg;
s/^== (.*) ==$/\!! $1/mg;
s/^=== (.*) ===$/\! $1/mg;
s/^==== (.*) ====$/\__$1__/mg;
# Fettdruck
s/'''''(.*?)'''''/__''$1''__/sg;
s/'''(.*?)'''/__$1__/sg;
# <pre> vorsortieren
s/(.+)<\/pre>/$1\n<\/pre>/mg;
# vorformatierter Text durch Einrückung
s/((?:^(?: )+[^ :].*\n)+)/{{{\n$1$klammer\n/mg;
# Eingerückt und pre ist dopelt gemoppelt
s/<pre>(\s)*{{{/{{{/sg;
s/$klammer(\s)*<\/pre>/$klammer/sg;
# vorformatierter Text mit pre
s/<pre>(.*?)<\/pre>/{{{$1$klammer/sg;
# Links mit Text
s/\[(http:\S*) ([^\]]*)\]/[$2|$1]/g;
# nowiki gibt es in der Form nicht im JspWiki,
# aber preformat kommt ihm vielleicht etwas nahe
# Leider kommt so alles im Monospaced Font
s/<nowiki>(.*?)<\/nowiki>/{{{$1$klammer/sg;
# Einrückungen gibt es nicht im JspWiki
# die Mehrfacheinrückungen gehen so nur in der ersten Zeile
s/^\s*:\s*([^:])/;: $1/mg;
s/^\s*::\s*([^:])/;:{{{ $klammer $1/mg;
s/^\s*:::\s*([^:])/;:{{{ $klammer $1/mg;
s/^\s*::::\s*([^:])/;:{{{ $klammer $1/mg;
s/^\s*:::::\s*/;:{{{ $klammer/mg;
# und das Ergebnis ausgeben
print;