/[socialtext-import]/kwiki/kwiki2st.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /kwiki/kwiki2st.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (show annotations)
Sun Nov 19 14:57:40 2006 UTC (17 years, 3 months ago) by dpavlin
File MIME type: text/plain
File size: 1737 byte(s)
Import initial versions convertors from kwiki (much more complete)
and phpwiki (just tiny subset which one of my wikis used) to
socialtext

1 #!/usr/bin/perl -w
2
3 my $debug = 1;
4
5 my $in_dir = shift @ARGV || die "usage: $0 [in_dir] [st/]";
6 my $out_dir = shift @ARGV || 'st';
7
8 opendir(DIR, $in_dir) || die "can't opendir $in_dir: $!";
9 my @pages = grep { ! /^\./ && -f "$in_dir/$_" } readdir(DIR);
10 closedir DIR;
11
12 my $pages_re = '(' . join('|', @pages) . ')';
13
14 foreach $file (@pages) {
15 warn "converting $file\n";
16
17 open(my $in, '<', "$in_dir/$file") || die "can't open $in_dir/file: $!";
18 open(my $out, '>', "$out_dir/$file") || die "can't write to $out_dir/$file: $!";
19
20 my $seen;
21
22 while(<$in>) {
23 # headings
24 s/^(\s*)(=)\s*([^=]+.*?)\2*(.*)$/^ $3 $4/;
25 s/^(\s*)(==)\s*([^=]+.*?)\2*(.*)$/^^ $3 $4/;
26 s/^(\s*)(===)\s*([^=]+.*?)\2*(.*)$/^^^ $3 $4/;
27 s/^(\s*)(====)\s*([^=]+.*?)\2*(.*)$/^^^^ $3 $4/;
28 s/^(\s*)(=====)\s*([^=]+.*?)\2*(.*)$/^^^^^ $3 $4/;
29 s/^(\s*)(======)\s*([^=]+.*?)\2*(.*)$/^^^^^^ $3 $4/;
30
31 $seen->{vim} = not $seen->{vim} if (s/^\.vim/.pre/);
32 $seen->{pre} = not $seen->{pre} if (m/^.pre/);
33 next if ( $seen->{pre} && m/^filetype:/ );
34
35 if (
36 ! $seen->{pre} &&
37 ( ! /^\s+/ && $seen->{space} ) # end of space preformat
38 ||
39 ( /^\s+\S+/ && ! $seen->{space} ) # begin of space preformat
40 ) {
41
42 print $out ".pre\n";
43 warn "## PRE\n" if ($debug);
44 $seen->{space} = not $seen->{space};
45 }
46
47 # fixspace
48 s/\[=(.+?)\]/`$1`/g;
49
50 # italics, risky
51 s!\s/([\w\s-]+)/[\s\.\!\,]! _$1_ !g;
52
53 # links
54 s!\[([\w\s]+)\s(http://.+?)\]!"$1"<$2>!g;
55 s!\[(http://.+?)\s([\w\s]+)\]!"$1"<$2>!g;
56
57 # link PagesWithCamelCaps
58 s!$pages_re![$1]!g;
59
60 warn join(",", grep { $seen->{$_} } keys %$seen), " ## $_" if ($debug);
61 print $out $_;
62 }
63
64 print $out ".pre\n" if ($seen->{space});
65
66 close($out) || die "can't close $out_dir/$file: $!";
67 close($in);
68
69 }

Properties

Name Value
svn:executable

  ViewVC Help
Powered by ViewVC 1.1.26