ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/bin/pod2wiki
(Generate patch)

Comparing deliantra/Deliantra-Client/bin/pod2wiki (file contents):
Revision 1.1 by root, Sun Aug 13 02:43:23 2006 UTC vs.
Revision 1.5 by root, Mon Aug 14 01:54:09 2006 UTC

1#! perl 1#! perl
2 2
3# convert given .pod files to wiki style
4
5# base path of arch tree, only used for new arch graphics
6my $ARCH = "/root/src/cf.schmorp.de/arch";
7
8use strict;
9
3use Storable; 10use Storable;
4
5# convert given .pod files to wiki style
6
7use strict;
8
9use Pod::POM; 11use Pod::POM;
10 12
11our @result; 13our @result;
12our $indent; 14our $indent;
13our $level; 15our $level;
16
17my $MA_BEG = "\x{fcd0}";
18my $MA_SEP = "\x{fcd1}";
19my $MA_END = "\x{fcd2}";
14 20
15sub asxml($) { 21sub asxml($) {
16 local $_ = $_[0]; 22 local $_ = $_[0];
17 23
18 s/&/&/g; 24 s/&/&/g;
54} 60}
55 61
56sub view_seq_link { 62sub view_seq_link {
57 my (undef, $link) = @_; 63 my (undef, $link) = @_;
58 64
59 # TODO: 65 my $text = $link =~ s/^(.*)\|// ? $1 : $link;
60 # http://...
61 # ref
62 # pod/ref
63 66
67 if ($link =~ /http:/) {
64 "<u>" . (::asxml $_[1]) . "</u>"; 68 "<u>" . (::asxml $link) . "</u>"
69 } elsif ($link =~ /^\$ARCH\/(.+)$/) {
70 my $path = $1;
71 (my $base = $path) =~ s/.*\///;
72 -f "$ARCH/$path" && system "cp -p \Q$ARCH/$path\E \Qresources/arch/$base";
73 "${MA_BEG}image${MA_SEP}arch/$base$MA_END"
74 } else {
75 "${MA_BEG}link$MA_SEP$text$MA_SEP$link$MA_END"
76 }
65} 77}
66 78
67sub view_item { 79sub view_item {
68 push @result, { 80 push @result, {
69 indent => $indent * 8, 81 indent => $indent * 8,
70 level => $level, 82 level => $level,
71 }; 83 };
72 my $title = $_[1]->title->present ($_[0]); 84 my $title = $_[1]->title->present ($_[0]);
73 $result[-1]{markup} = "$title\n\n"; 85 $result[-1]{markup} = "$title\n\n" if length $title;
74 unshift @{ $result[-1]{index} }, ::flatten $title; 86 $title = ::flatten $title; unshift @{ $result[-1]{index} }, $title if length $title;
75 local $level = $level + 1; 87 local $level = $level + 1;
76 $_[1]->content->present ($_[0]); 88 $_[1]->content->present ($_[0]);
77 () 89 ()
78} 90}
79 91
99 push @result, { 111 push @result, {
100 indent => $indent * 16, 112 indent => $indent * 16,
101 level => $level, 113 level => $level,
102 }; 114 };
103 my $title = $_[1]->title->present ($_[0]); 115 my $title = $_[1]->title->present ($_[0]);
104 $result[-1]{markup} = "\n\n<span foreground='#ffff00' size='x-large'>$title</span>\n"; 116 $result[-1]{markup} = "\n\n<span foreground='#ffff00' size='x-large'>$title</span>\n" if length $title;
105 unshift @{ $result[-1]{index} }, ::flatten $title; 117 $title = ::flatten $title; unshift @{ $result[-1]{index} }, $title if length $title;
106 local $level = $level + 1; 118 local $level = $level + 1;
107 $_[1]->content->present ($_[0]); 119 $_[1]->content->present ($_[0]);
108 () 120 ()
109}; 121};
110 122
112 push @result, { 124 push @result, {
113 indent => $indent * 16, 125 indent => $indent * 16,
114 level => $level, 126 level => $level,
115 }; 127 };
116 my $title = $_[1]->title->present ($_[0]); 128 my $title = $_[1]->title->present ($_[0]);
117 $result[-1]{markup} = "\n\n<span foreground='#ccccff' size='large'>$title</span>\n"; 129 $result[-1]{markup} = "\n\n<span foreground='#ccccff' size='large'>$title</span>\n" if length $title;
118 unshift @{ $result[-1]{index} }, ::flatten $title; 130 $title = ::flatten $title; unshift @{ $result[-1]{index} }, $title if length $title;
119 local $level = $level + 1; 131 local $level = $level + 1;
120 $_[1]->content->present ($_[0]); 132 $_[1]->content->present ($_[0]);
121 () 133 ()
122}; 134};
123 135
125 push @result, { 137 push @result, {
126 indent => $indent * 16, 138 indent => $indent * 16,
127 level => $level, 139 level => $level,
128 }; 140 };
129 my $title = $_[1]->title->present ($_[0]); 141 my $title = $_[1]->title->present ($_[0]);
130 $result[-1]{markup} = "\n\n<span size='large'>$title</span>\n"; 142 $result[-1]{markup} = "\n\n<span size='large'>$title</span>\n" if length $title;
131 unshift @{ $result[-1]{index} }, ::flatten $title; 143 $title = ::flatten $title; unshift @{ $result[-1]{index} }, $title if length $title;
132 local $level = $level + 1; 144 local $level = $level + 1;
133 $_[1]->content->present ($_[0]); 145 $_[1]->content->present ($_[0]);
134 () 146 ()
135}; 147};
136 148
144sub view_for { 156sub view_for {
145 if ($_[1]->format eq "image") { 157 if ($_[1]->format eq "image") {
146 push @result, { 158 push @result, {
147 indent => $indent * 16, 159 indent => $indent * 16,
148 level => $level, 160 level => $level,
149 markup => "\x{fffc}", 161 markup => "${MA_BEG}image${MA_SEP}pod/" . $_->text . $MA_END,
150 widget => [["CFPlus::UI::Image" => path => "pod/" . $_[1]->text]],
151 }; 162 };
152 } 163 }
153 () 164 ()
154} 165}
155 166
162############################################################################# 173#############################################################################
163 174
164sub as_paragraphs($) { 175sub as_paragraphs($) {
165 my ($pom) = @_; 176 my ($pom) = @_;
166 177
167 local @result = ( { } );
168 local $indent = 0; 178 local $indent = 0;
169 local $level = 1; 179 local $level = 1;
180 local @result = ( { } );
170 181
171 $pom->present ("AsParagraphs"); 182 $pom->present ("AsParagraphs");
172 183
173 [grep exists $_->{markup}, @result] 184 [grep $_->{index} || exists $_->{markup}, @result]
174} 185}
175 186
176############################################################################# 187#############################################################################
177 188
178my %wiki; 189my %wiki;
179 190
180sub add_node($) { 191sub add_node($) {
181 my ($node) = @_; 192 my ($node) = @_;
182 193
183 for (@{ $node->{kw} || {} }) { 194 for (@{ $node->{kw} || {} }) {
184 push @{$wiki{$_}}, $node; 195 push @{$wiki{lc $_}}, $node;
185 } 196 }
186} 197}
187 198
188my $root = { 199my $root = {
189 kw => ["pod"], 200 kw => ["pod"],

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines