This page (revision-17) was last changed on 15-Nov-2006 09:14 by MarkusMonderkamp 

This page was created on 05-Nov-2006 02:41 by ThomasBayen

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
17 15-Nov-2006 09:14 6 KB MarkusMonderkamp to previous Filter verlinkt zur Vermeidung von UnusedPages
16 14-Nov-2006 21:35 6 KB PeterHormanns to previous | to last Wunsch nach DiskussionWiki
15 09-Nov-2006 23:43 7 KB MarkusMonderkamp to previous | to last Wiki-Variable mtime für Topics
14 09-Nov-2006 23:13 7 KB PeterHormanns to previous | to last Filter aktiv
13 08-Nov-2006 16:37 6 KB PeterHormanns to previous | to last Lösung für weitere Variablen
12 08-Nov-2006 15:13 6 KB MarkusMonderkamp to previous | to last Kommentar zu ausstehenden Filter-Features
11 07-Nov-2006 22:27 6 KB PeterHormanns to previous | to last Filter-Fehler
10 07-Nov-2006 20:58 6 KB ThomasBayen to previous | to last
9 07-Nov-2006 18:26 5 KB PeterHormanns to previous | to last JSPWiki Filter
8 07-Nov-2006 18:08 5 KB PeterHormanns to previous | to last JSPWiki Filter
7 06-Nov-2006 12:45 5 KB ThomasBayen to previous | to last
6 06-Nov-2006 12:44 5 KB ThomasBayen to previous | to last Antwort und Aufruf zur Diskussion
5 05-Nov-2006 16:26 4 KB MarkusMonderkamp to previous | to last tutto bene -Thomas hat ganze Regexp-Arbeit geleistet
4 05-Nov-2006 12:33 3 KB ThomasBayen to previous | to last WikiKonverter 0.3 eingestellt
3 05-Nov-2006 11:44 2 KB ThomasBayen to previous | to last WikiKonverter 0.2 eingestellt
2 05-Nov-2006 11:43 2 KB ThomasBayen to previous | to last WikiKonverter 0.2 eingestellt
1 05-Nov-2006 02:41 1 KB ThomasBayen to last Beta-Version

Page References

Incoming links Outgoing links
WikiKonverter...nobody

Version management

Difference between version and

!!! 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.

''MarkusMonderkamp am 04.11.2006:\\Danke und Hut ab, die Version scheint alle Sonderfälle, auch meine kruden HTML-Einschübe, zu berücksichtigen. HTML-Entitäten für Umlaute sollen Plattform-Unabhängigkeit gewährleisten und Fett-Auszeichnungen per <b /> wirkten bei usemodwiki auch über mehrere Zeilen, die eingebauten Apostrophen nur für die aktuelle Zeile.''

;: Die HTML-Entitäten scheinen im normalen Text zu gehen, im preformatierten Teil nicht. Soweit ich das sehe, sollten HTML-Entitäten nicht nötig sein (sollte aber auch nicht stören). Wie ich bemerkte, hatte jede Deiner HTML-Verwendungen Ihren Sinn und hat die Usemod-Syntax sinnvoll erweitert. Leider scheint JspWiki viele Dinge einfach nicht zu können. AFAIK kann man hier auch HTML-Markup einschalten. Entweder ist das die Lösung oder wir schreiben eine eigene Markup-Engine für Usemod-Markup (oder [Wikicreole|http://www.wikicreole.org/] oder Wikipedia-Markup). Ich kann mich einfach nicht an die Ausrufungszeichen gewöhnen... Vielleicht diskutieren wir das mal im Limericks.


!!! Version 0.3m

{{{
#!/usr/bin/perl

# WikiKonverter V0.3
#
# Aufruf mit
# $ WikiKonverter.pl eingabe.txt >ausgabe.txt



# Datei einlesen
$_=join '',<>;

# Ist das überhaupt ein von Peter eingezogener
# und noch nicht korrigierter Text?
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 meiste Verwirrung macht Peters Zeilen-gewrappe... :-(

# 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;
# manchmal steht auch sowas wie --ThomasBayen am Anfang einer Zeile
s/(?<!(.\n|.=|--))\n(--\s?[A-Z][a-z])/$1 $2/g;
# manchmal steht auch -- am Ende und ThomasBayen in der nächsten
s/[^-]--\n([A-Z][a-z])/-- $1/g;
# Freizeile am Anfang wegmachen
s/^\n//;

# Bereinigung von Seltsamigkeiten, die meine Regexe verwirren könnten
s/^\s+$//mg;

# 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;

# Einrückungen per * sehen meistens besser aus
# sind aber blöd, wenn sie mit Aufzählungen kombiniert sind
s/^\s*:\s*([^:])/** $1/mg;
s/^\s*::\s*([^:])/*** $1/mg;
s/^\s*:::\s*([^:])/**** $1/mg;
s/^\s*::::\s*([^:])/***** $1/mg;
s/^\s*:::::\s*/****** /mg;

# <br> wird von MarkusMonderkamp gerne innerhalb von Einrückungen benutzt
# Das gleiche Ergebnis gibt's in JspWiki nicht
# So wie ich es mache, gibt es eine gleichwertige Einrückung
# ::: Sorry f&uuml;r die Inline-Antwort. &lt;br/> sorgte f.den Erhalt der umliegenden Usemodwiki-Auszeichnung.
# ::: Danke f. die Umwandlung - MarkusMonderkamp
s/^(\*+)([^*].*)<br>/$1$2\n$1 /mg;
s/^(\*+)([^*].*)<br>/$1$2\n$1 /mg;
s/^(\*+)([^*].*)<br>/$1$2\n$1 /mg;
s/^(\*+)([^*].*)<br>/$1$2\n$1 /mg;
s/^(\*+)([^*].*)<br>/$1$2\n$1 /mg;
s/<br>/\n\n/mg;

# <b> wurde von MarkusMonderkamp benutzt. Baeh!
# ::: Ack - volle Zustimmung, Fett-Auszeichnungen per ''' ... ''' gelten in Usemodwiki nur
# ::: f. die aktuelle Zeile. MarkusMonderkamp
s/<\/?b>/__/mg;


# Bemerkung zum Abschluss:
# Das WikiMarkup von JspWiki ist klar unterlegen!

# und das Ergebnis ausgeben
print;
}}}
<<
!!JSPWiki Filter

Als Alternative zum Konvertierungsskript von Thomas habe ich einen Filter für das JSPWiki angefangen. Die Sourcen als Anhang...

Das mache ich ganz ohne reguläre Ausdrücke (Schande über mein Haupt).

;: Was heisst hier Schande?!? Das Perl-Motto ist schliesslich [TMTOWDTI|http://catb.org/jargon/html/T/TMTOWTDI.html]

Was der Filter noch nicht kann:
* Links umsetzen
** normale Links funktionieren jetzt, InterWiki-Links jedoch nicht.
* die nowiki-Syntax
* HTML-Code von Markus
** IMO nicht erforderlich, solange JSP-Wiki-Tags über mehrere Zeilen wirken,\\denn daf&uuml;r waren die HTML-Knubbel in Usemodwiki hilfreich
* in {{{ {{{ }}}-Umgebung wird trotzdem ersetzt :-(
** Das Problem ist gelöst.
* bitte fortsetzen...

;: Also ehrlich gesagt war die Entwicklung obigen Skriptes ein Try & Error-Verfahren mit -zig Versuchen. D.h. Austesten musst Du den Code wohl selber (oder wir machen mal eine Session zum Thema in der LUG). Es waren gerade die subtilen Problemchen, die mich aufgehalten haben. Andererseits ist die Frage, ob das Ergebnis unbedingt 100% Usemod-konform sein soll (wir also kein Byte ändern müssen) oder ob wir nur eine "saubere" Implementation wollen, die alles kann, was wir wollen (wenn auch in Details anders als vorher). IMHO würde letzteres reichen - wenn dann ab und an jemandem ein Fehlerchen auffällt, kann man das ja von Hand reparieren. -- ThomasBayen

::So, jetzt ist eine Version des [Filters|WikiKonverter/UseModFilter.java] installiert. Ich hoffe es gibt keine größeren Unfälle damit (geprüft per [Test|WikiKonverter/UseModFilterTest.java]).