#!/usr/bin/perl use MDK::Common; # convert twiki to mediawiki syntax foreach my $file (@ARGV) { print "processing $file\n"; my ($toc_found, $header_found, $in_a_link); substInFile { # the meat, the regexps were taken from http://twiki.org/cgi-bin/view/Plugins/MediawikiEditSyntaxRegex#TWiki s/\*([^*]*?)\*/$1<\/b>/g; # bold s/\b__(.*?)__/$1<\/b><\/i>/g; # italic bold s/\b_([^_]*?)_/$1<\/i>/g; # italic s/(^|[\s\(])==([^ ].*?[^ ])==([\s\)\.,\:;!\?]|$)/$1'''$2<\/tt>'''$3/; # monospaced bold s/(^|[\s\(])=([^ ].*?[^ ])=([\s\)\.,\:;!\?]|$)/$1$2<\/tt>$3/; # monospaced s/(^|[\n\r])---\+\+\+\+\+\+([^\n\r]*)/$1======$2 ======/; # H6 s/(^|[\n\r])---\+\+\+\+\+([^\n\r]*)/$1=====$2 =====/; # H5 s/(^|[\n\r])---\+\+\+\+([^\n\r]*)/$1====$2 ====/; # H4 s/(^|[\n\r])---\+\+\+([^\n\r]*)/$1===$2 ===/; # H3 s/(^|[\n\r])---\+\+([^\n\r]*)/$1==$2 ==/; # H2 s/(^|[\n\r])---\+([^\n\r]*)/${1}=${2} =/; # H1 s/\[\[(http\:.*?)\]\[(.*?)\]\]/\[$1 $2\]/g; # FIXME: THIS WORKAROUNDS AN ISSUE IN NEXT REGEXP s/\[\[(https?\:.*?)\]\[(.*?)\]\]/\[$1 $2\]/g; # external link [[http:...][label]] s/\[\[([^\]]*)\]\]/\[\[$1\|$1\]\]/g; # internal link [[WikiWord][WikiWord]] s/\[\[([^\]]*)\]\[(.*?)\]\]/\[\[$1\|$2\]\]/g; # internal link [[WikiWord][label]] s/(^|[\n\r])[ ]{3}\* /$1\* /; # level 1 bullet s/(^|[\n\r])[ ]{6}\* /$1\*\* /; # level 2 bullet s/(^|[\n\r])[ ]{9}\* /$1\*\*\* /; # level 3 bullet s/(^|[\n\r])[ ]{12}\* /$1\*\*\*\* /; # level 4 bullet s/(^|[\n\r])[ ]{15}\* /$1\*\*\*\*\* /; # level 5 bullet s/(^|[\n\r])[ ]{18}\* /$1\*\*\*\*\*\* /; # level 6 bullet s/(^|[\n\r])[ ]{21}\* /$1\*\*\*\*\*\*\* /; # level 7 bullet s/(^|[\n\r])[ ]{24}\* /$1\*\*\*\*\*\*\*\* /; # level 8 bullet s/(^|[\n\r])[ ]{27}\* /$1\*\*\*\*\*\*\*\*\* /; # level 9 bullet s/(^|[\n\r])[ ]{30}\* /$1\*\*\*\*\*\*\*\*\*\* /; # level 10 bullet s/(^|[\n\r])[ ]{3}[0-9]\.? /$1# /; # level 1 bullet s/(^|[\n\r])[ ]{6}[0-9]\.? /$1## /; # level 2 bullet s/(^|[\n\r])[ ]{9}[0-9]\.? /$1### /; # level 3 bullet s/(^|[\n\r])[ ]{12}[0-9]\.? /$1#### /; # level 4 bullet s/(^|[\n\r])[ ]{15}[0-9]\.? /$1##### /; # level 5 bullet s/(^|[\n\r])[ ]{18}[0-9]\.? /$1######/g; # level 6 bullet s/(^|[\n\r])[ ]{21}[0-9]\.? /$1#######/g; # level 7 bullet s/(^|[\n\r])[ ]{24}[0-9]\.? /$1########/g; # level 8 bullet s/(^|[\n\r])[ ]{27}[0-9]\.? /$1#########/g; # level 9 bullet s/(^|[\n\r])[ ]{30}[0-9]\.? /$1##########/g; # level 10 bullet s/(^|[\n\r])[ ]{3}\$ ([^\:]*)/$1; $2/g; # $ definition: term #----------------------------------------- # extra stuff: # TOC: $toc_found ||= s/
//; if ($toc_found && m!
!) { s!!!; undef $toc_found; } s/\%TOC\%/__TOC__/; # headers: $header_found ||= s/