IServ-Wiki:Konvertierungsscript: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
K |
K |
||
Zeile 59: | Zeile 59: | ||
# Das Tabellenende wird im MediaWiki mit <tt><nowiki>|}</nowiki></tt> markiert, das Script ist jedoch nicht in der Lage, dies an die Tabellen anzuhängen. Mir ist es nicht gelungen, mit <tt>sed</tt> das Ende einer DokuWiki-Tabelle zu erkennen, unter anderem deshalb, weil <tt>sed</tt> den Zeilenumbruch vor Scriptausführung ausfiltert. | # Das Tabellenende wird im MediaWiki mit <tt><nowiki>|}</nowiki></tt> markiert, das Script ist jedoch nicht in der Lage, dies an die Tabellen anzuhängen. Mir ist es nicht gelungen, mit <tt>sed</tt> das Ende einer DokuWiki-Tabelle zu erkennen, unter anderem deshalb, weil <tt>sed</tt> den Zeilenumbruch vor Scriptausführung ausfiltert. | ||
+ | # Die Schreibmaschinenschrift wird im Dokuwiki mit <nowiki>''</nowiki> ein- und ausgeschaltet. Die entsprechenden Tags dazu im MediaWiki sind <tt><nowiki><tt></nowiki></tt> und <tt><nowiki></tt></nowiki></tt>. Das sed-Script ersetzt einfachheitshalber alle <nowiki>''</nowiki> durch <tt><nowiki><tt></nowiki></tt>. |
Version vom 3. August 2006, 19:10 Uhr
Ich arbeite zur Zeit an einem sed-Script, dass die Konvertierung von DokuWiki-Artikeln in das MediaWiki-Format erleichern soll. Viele der kleinen Seiten können problemlos per Hand übersetzt werden, bei der Kommandozeilenreferenz ist das allerdings nicht so gut machbar...
Konvertierungs-Script
#!/bin/sed -f # Ueberschriften s/======/=/g;t headersdone s/=====/==/g;t headersdone s/====/===/g;t headersdone s/===/====/g;t headersdone s/==/=====/g;t headersdone :headersdone ############################## ### Tabellen ################# ############################## # Im MediaWiki werden Tabellen durch {| eingeleitet, im DokuWiki werden # Tabellen gar nicht eingeleitet. Wir suchen daher einfach alle DokuWiki- # Tabellenheader heraus, und stellen ihnen die MediaWiki-Einleitung voran. /^\^/ i\ {| class="wikitable" # Das DokuWiki beendet eine TH-Zeile mit einem ^, eine TD-Zeile mit einem |. # Das MediaWiki beendet Zeilen nur mit dem Zeilenumbruch, daher muessen wir # die ueberstehenden Zeichen entfernen. /^\^/ s/\(.*\)\^/\1/ /^|/ s/\(.*\)|/\1/ # Das erste ^ ersetzen wir nun durch ein "! ", das erste | wird nur um ein # Leerzeichen ergaenzt. /^\^/ s/^\^/! / /^|/ s/^|/| / # Alle weiteren ^ ersetzen wir durch " !! ". /^!/ s/\^/ !! /g # Alle weiteren | ersetzen wir durch " || ". # Zu dem Zweck muessen wir das erste | temporaer entfernen, es wird nachher # wiederhergestellt. Sonst wuerde das erste auch ersetzt werden :-/ /^|/ s/|// /|/ s/|/ || /g /|/ s/.*/|&/
Testdatei mit DokuWiki-Sytnax
== Header 1 == === Header 2 === ^Kopf^Kopf^Kopf^Kopf^ |Spalte|Spalte|Spalte|Spalte| |Spalte|Spalte|Spalte|Spalte| |Spalte|Spalte|Spalte|Spalte|
Probleme
- Das Tabellenende wird im MediaWiki mit |} markiert, das Script ist jedoch nicht in der Lage, dies an die Tabellen anzuhängen. Mir ist es nicht gelungen, mit sed das Ende einer DokuWiki-Tabelle zu erkennen, unter anderem deshalb, weil sed den Zeilenumbruch vor Scriptausführung ausfiltert.
- Die Schreibmaschinenschrift wird im Dokuwiki mit '' ein- und ausgeschaltet. Die entsprechenden Tags dazu im MediaWiki sind <tt> und </tt>. Das sed-Script ersetzt einfachheitshalber alle '' durch <tt>.