/[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

Annotation of /kwiki/kwiki2st.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (hide annotations)
Sun Nov 19 14:57:40 2006 UTC (17 years, 5 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 dpavlin 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