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.16 by root, Sun Mar 30 13:02:27 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
117} 104}
118 105
119sub view_head1 { 106sub view_head1 {
120 push @result, [ $indent * 16, $level ]; 107 push @result, [ $indent * 16, $level ];
121 my $title = $_[1]->title->present ($_[0]); 108 my $title = $_[1]->title->present ($_[0]);
122 $result[-1][P_MARKUP] = "\n\n<span foreground='#ffff00' size='x-large'>$title</span>\n" if length $title; 109 $result[-1][P_MARKUP] = ::special h1 => $title if length $title;
123 $title = ::flatten $title; unshift @{ $result[-1][P_INDEX] }, $title if length $title; 110 $title = ::flatten $title;
111 unshift @{ $result[-1][P_INDEX] }, $title
112 if !$result[-1][P_INDEX];
124 local $level = $level + 1; 113 local $level = $level + 1;
125 $_[1]->content->present ($_[0]); 114 $_[1]->content->present ($_[0]);
126 () 115 ()
127}; 116};
128 117
129sub view_head2 { 118sub view_head2 {
130 push @result, [ $indent * 16, $level ]; 119 push @result, [ $indent * 16, $level ];
131 my $title = $_[1]->title->present ($_[0]); 120 my $title = $_[1]->title->present ($_[0]);
132 $result[-1][P_MARKUP] = "\n\n<span foreground='#ccccff' size='large'>$title</span>\n" if length $title; 121 $result[-1][P_MARKUP] = ::special h2 => $title if length $title;
133 $title = ::flatten $title; unshift @{ $result[-1][P_INDEX] }, $title if length $title; 122 $title = ::flatten $title;
123 unshift @{ $result[-1][P_INDEX] }, $title
124 if !$result[-1][P_INDEX];
134 local $level = $level + 1; 125 local $level = $level + 1;
135 $_[1]->content->present ($_[0]); 126 $_[1]->content->present ($_[0]);
136 () 127 ()
137}; 128};
138 129
139sub view_head3 { 130sub view_head3 {
140 push @result, [ $indent * 16, $level ]; 131 push @result, [ $indent * 16, $level ];
141 my $title = $_[1]->title->present ($_[0]); 132 my $title = $_[1]->title->present ($_[0]);
142 $result[-1][P_MARKUP] = "\n\n<span size='large'>$title</span>\n" if length $title; 133 $result[-1][P_MARKUP] = ::special h3 => $title if length $title;
143 $title = ::flatten $title; unshift @{ $result[-1][P_INDEX] }, $title if length $title; 134 $title = ::flatten $title;
135 unshift @{ $result[-1][P_INDEX] || [] }, $title
136 if !$result[-1][P_INDEX];
144 local $level = $level + 1; 137 local $level = $level + 1;
145 $_[1]->content->present ($_[0]); 138 $_[1]->content->present ($_[0]);
146 () 139 ()
147}; 140};
148 141
149sub view_over { 142sub view_over {
150 local $indent = $indent + $_[1]->indent; 143 local $indent = $indent + $_[1]->indent;
151 push @result, [ $indent, $level ]; 144 push @result, [ $indent, $level ];
145 $_[1]->content->present ($_[0]);
146 ()
147}
148
149sub view_item {
150 push @result, [ $indent * 8, $level ];
151 my $title = $_[1]->title->present ($_[0]);
152 $result[-1][P_MARKUP] = "$title\n" if length $title;
153 $title = ::flatten $title;
154 unshift @{ $result[-1][P_INDEX] || [] }, $title
155 if !$result[-1][P_INDEX];
152 local $level = $level + 1; 156 local $level = $level + 1;
153 $_[1]->content->present ($_[0]); 157 $_[1]->content->present ($_[0]);
154 () 158 ()
155} 159}
156 160
194my %wiki; 198my %wiki;
195 199
196sub add_node($) { 200sub add_node($) {
197 my ($node) = @_; 201 my ($node) = @_;
198 202
199 for (@{ $node->{kw} || {} }) { 203 for (@{ $node->[N_KW] || {} }) {
200 push @{$wiki{lc $_}}, $node; 204 push @{$wiki{lc $_}}, $node;
201 } 205 }
202} 206}
203 207
204my $root = { 208my $root;
205 kw => ["pod"], 209$root->[N_KW] = ["Documents", "pod"];
206}; 210$root->[N_DOC] = [[0, 0, ::special link => "All Documents", "pod/*"]];
207 211
208for my $path (@ARGV) { 212for my $path (@ARGV) {
209 $path =~ /([^\/\\]+)\.pod$/ or die "$path: illegal pathname"; 213 $path =~ /([^\/\\]+)\.pod$/ or die "$path: illegal pathname";
210 my $base = $1; 214 my $base = $1;
211 my $pom = Pod::POM->new->parse_text (do { 215 my $pom = Pod::POM->new->parse_text (do {
215 <$pod> 219 <$pod>
216 }); 220 });
217 221
218 my $para = as_paragraphs $pom; 222 my $para = as_paragraphs $pom;
219 223
224 my $pod;
225 $pod->[N_PARENT] = $root;
226 $pod->[N_PAR] = 0;
227 $pod->[N_LEVEL] = 1;
228 $pod->[N_KW] = [$base];
229 $pod->[N_DOC] = $para;
230
220 my @parent = ( 231 my @parent = ($pod);
221 { parent => $root, kw => [$base], doc => $para, par => 0, level => 1 },
222 );
223 add_node $parent[-1];
224 232
225 for my $idx (0 .. $#$para) { 233 for my $idx (0 .. $#$para) {
226 my $par = $para->[$idx]; 234 my $par = $para->[$idx];
227 235
228 while ($parent[-1]{level} >= $par->[P_LEVEL]) { 236 while ($parent[-1][N_LEVEL] >= $par->[P_LEVEL]) {
229 pop @parent; 237 pop @parent;
230 } 238 }
231 239
232 if ($par->[P_INDEX]) { 240 if ($par->[P_INDEX]) {
233 my $node = { 241 my $node;
234 kw => $par->[P_INDEX], 242 $node->[N_PARENT] = $parent[-1];
235 parent => $parent[-1], 243 $node->[N_PAR] = $idx;
236 doc => $para, 244 $node->[N_LEVEL] = $par->[P_LEVEL];
237 par => $idx, 245 $node->[N_KW] = $par->[P_INDEX];
238 level => $par->[P_LEVEL], 246 $node->[N_DOC] = $para;
239 };
240 push @parent, $node; 247 push @parent, $node;
241 add_node $node; 248 add_node $node;
242 } 249 }
243 } 250 }
251
252 add_node $pod;
244} 253}
254
255add_node $root;
245 256
246Storable::nstore \%wiki, "docwiki.pst"; 257Storable::nstore \%wiki, "docwiki.pst";
247 258

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines