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.11 by root, Tue Mar 25 01:46:36 2008 UTC vs.
Revision 1.12 by root, Tue Mar 25 02:12:36 2008 UTC

91 } else { 91 } else {
92 ::special link => $text, $link 92 ::special link => $text, $link
93 } 93 }
94} 94}
95 95
96sub view_item {
97 push @result, [
98 $indent * 8,
99 $level,
100 ];
101 my $title = $_[1]->title->present ($_[0]);
102 $result[-1][P_MARKUP] = "$title\n" if length $title;
103 $title = ::flatten $title; unshift @{ $result[-1][P_INDEX] }, $title if length $title;
104 local $level = $level + 1;
105 $_[1]->content->present ($_[0]);
106 ()
107}
108
109sub view_verbatim { 96sub view_verbatim {
110 push @result, [ $indent * 16, $level, "<tt>" . (::asxml $_[1]) . "</tt>\n" ]; 97 push @result, [ $indent * 16, $level, "<tt>" . (::asxml $_[1]) . "</tt>\n" ];
111 () 98 ()
112} 99}
113 100
147}; 134};
148 135
149sub view_over { 136sub view_over {
150 local $indent = $indent + $_[1]->indent; 137 local $indent = $indent + $_[1]->indent;
151 push @result, [ $indent, $level ]; 138 push @result, [ $indent, $level ];
139 $_[1]->content->present ($_[0]);
140 ()
141}
142
143sub view_item {
144 push @result, [ $indent * 8, $level ];
145 my $title = $_[1]->title->present ($_[0]);
146 $result[-1][P_MARKUP] = "$title\n" if length $title;
147 $title = ::flatten $title; unshift @{ $result[-1][P_INDEX] }, $title if length $title;
152 local $level = $level + 1; 148 local $level = $level + 1;
153 $_[1]->content->present ($_[0]); 149 $_[1]->content->present ($_[0]);
154 () 150 ()
155} 151}
156 152
194my %wiki; 190my %wiki;
195 191
196sub add_node($) { 192sub add_node($) {
197 my ($node) = @_; 193 my ($node) = @_;
198 194
199 for (@{ $node->{kw} || {} }) { 195 for (@{ $node->[N_KW] || {} }) {
200 push @{$wiki{lc $_}}, $node; 196 push @{$wiki{lc $_}}, $node;
201 } 197 }
202} 198}
203 199
204my $root = { 200my $root;
205 kw => ["pod"], 201$root->[N_KW] = ["pod"];
206};
207 202
208for my $path (@ARGV) { 203for my $path (@ARGV) {
209 $path =~ /([^\/\\]+)\.pod$/ or die "$path: illegal pathname"; 204 $path =~ /([^\/\\]+)\.pod$/ or die "$path: illegal pathname";
210 my $base = $1; 205 my $base = $1;
211 my $pom = Pod::POM->new->parse_text (do { 206 my $pom = Pod::POM->new->parse_text (do {
215 <$pod> 210 <$pod>
216 }); 211 });
217 212
218 my $para = as_paragraphs $pom; 213 my $para = as_paragraphs $pom;
219 214
215 my $pod;
216 $pod->[N_PARENT] = $root;
217 $pod->[N_PAR] = 0;
218 $pod->[N_LEVEL] = 1;
219 $pod->[N_KW] = [$base];
220 $pod->[N_DOC] = $para;
221
220 my @parent = ( 222 my @parent = ($pod);
221 { parent => $root, kw => [$base], doc => $para, par => 0, level => 1 },
222 );
223 add_node $parent[-1]; 223 add_node $parent[-1];
224 224
225 for my $idx (0 .. $#$para) { 225 for my $idx (0 .. $#$para) {
226 my $par = $para->[$idx]; 226 my $par = $para->[$idx];
227 227
228 while ($parent[-1]{level} >= $par->[P_LEVEL]) { 228 while ($parent[-1][N_LEVEL] >= $par->[P_LEVEL]) {
229 pop @parent; 229 pop @parent;
230 } 230 }
231 231
232 if ($par->[P_INDEX]) { 232 if ($par->[P_INDEX]) {
233 my $node = { 233 my $node;
234 kw => $par->[P_INDEX], 234 $node->[N_PARENT] = $parent[-1];
235 parent => $parent[-1], 235 $node->[N_PAR] = $idx;
236 doc => $para, 236 $node->[N_LEVEL] = $par->[P_LEVEL];
237 par => $idx, 237 $node->[N_KW] = $par->[P_INDEX];
238 level => $par->[P_LEVEL], 238 $node->[N_DOC] = $para;
239 };
240 push @parent, $node; 239 push @parent, $node;
241 add_node $node; 240 add_node $node;
242 } 241 }
243 } 242 }
244} 243}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines