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.17 by root, Wed Apr 2 13:27:55 2008 UTC

77} 77}
78 78
79sub view_seq_link { 79sub view_seq_link {
80 my (undef, $link) = @_; 80 my (undef, $link) = @_;
81 81
82 my $text = $link =~ s/^(.*)\|// ? $1 : $link; 82 $link =~ s/^(.*)\|//
83 or $link =~ /([^\/]*)$/;
84
85 my $text = $1;
83 86
84 if ($link =~ /http:/) { 87 if ($link =~ /http:/) {
85 "<u>" . (::asxml $link) . "</u>" 88 "<u>" . (::asxml $link) . "</u>"
86 } elsif ($link =~ /^\$ARCH\/(.+)$/) { 89 } elsif ($link =~ /^\$ARCH\/(.+)$/) {
87 my $path = $1; 90 my $path = $1;
91 } else { 94 } else {
92 ::special link => $text, $link 95 ::special link => $text, $link
93 } 96 }
94} 97}
95 98
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 { 99sub view_verbatim {
110 push @result, [ $indent * 16, $level, "<tt>" . (::asxml $_[1]) . "</tt>\n" ]; 100 push @result, [ $indent * 16, $level, "<tt>" . (::asxml $_[1]) . "</tt>\n" ];
111 () 101 ()
112} 102}
113 103
117} 107}
118 108
119sub view_head1 { 109sub view_head1 {
120 push @result, [ $indent * 16, $level ]; 110 push @result, [ $indent * 16, $level ];
121 my $title = $_[1]->title->present ($_[0]); 111 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; 112 $result[-1][P_MARKUP] = ::special h1 => $title if length $title;
123 $title = ::flatten $title; unshift @{ $result[-1][P_INDEX] }, $title if length $title; 113 $title = ::flatten $title;
114 unshift @{ $result[-1][P_INDEX] }, $title
115 if !$result[-1][P_INDEX];
124 local $level = $level + 1; 116 local $level = $level + 1;
125 $_[1]->content->present ($_[0]); 117 $_[1]->content->present ($_[0]);
126 () 118 ()
127}; 119};
128 120
129sub view_head2 { 121sub view_head2 {
130 push @result, [ $indent * 16, $level ]; 122 push @result, [ $indent * 16, $level ];
131 my $title = $_[1]->title->present ($_[0]); 123 my $title = $_[1]->title->present ($_[0]);
132 $result[-1][P_MARKUP] = "\n\n<span foreground='#ccccff' size='large'>$title</span>\n" if length $title; 124 $result[-1][P_MARKUP] = ::special h2 => $title if length $title;
133 $title = ::flatten $title; unshift @{ $result[-1][P_INDEX] }, $title if length $title; 125 $title = ::flatten $title;
126 unshift @{ $result[-1][P_INDEX] }, $title
127 if !$result[-1][P_INDEX];
134 local $level = $level + 1; 128 local $level = $level + 1;
135 $_[1]->content->present ($_[0]); 129 $_[1]->content->present ($_[0]);
136 () 130 ()
137}; 131};
138 132
139sub view_head3 { 133sub view_head3 {
140 push @result, [ $indent * 16, $level ]; 134 push @result, [ $indent * 16, $level ];
141 my $title = $_[1]->title->present ($_[0]); 135 my $title = $_[1]->title->present ($_[0]);
142 $result[-1][P_MARKUP] = "\n\n<span size='large'>$title</span>\n" if length $title; 136 $result[-1][P_MARKUP] = ::special h3 => $title if length $title;
143 $title = ::flatten $title; unshift @{ $result[-1][P_INDEX] }, $title if length $title; 137 $title = ::flatten $title;
138 unshift @{ $result[-1][P_INDEX] || [] }, $title
139 if !$result[-1][P_INDEX];
144 local $level = $level + 1; 140 local $level = $level + 1;
145 $_[1]->content->present ($_[0]); 141 $_[1]->content->present ($_[0]);
146 () 142 ()
147}; 143};
148 144
149sub view_over { 145sub view_over {
150 local $indent = $indent + $_[1]->indent; 146 local $indent = $indent + $_[1]->indent;
151 push @result, [ $indent, $level ]; 147 push @result, [ $indent, $level ];
148 $_[1]->content->present ($_[0]);
149 ()
150}
151
152sub view_item {
153 push @result, [ $indent * 8, $level ];
154 my $title = $_[1]->title->present ($_[0]);
155 $result[-1][P_MARKUP] = "$title\n" if length $title;
156 $title = ::flatten $title;
157 unshift @{ $result[-1][P_INDEX] || [] }, $title
158 if !$result[-1][P_INDEX];
152 local $level = $level + 1; 159 local $level = $level + 1;
153 $_[1]->content->present ($_[0]); 160 $_[1]->content->present ($_[0]);
154 () 161 ()
155} 162}
156 163
194my %wiki; 201my %wiki;
195 202
196sub add_node($) { 203sub add_node($) {
197 my ($node) = @_; 204 my ($node) = @_;
198 205
199 for (@{ $node->{kw} || {} }) { 206 for (@{ $node->[N_KW] || {} }) {
200 push @{$wiki{lc $_}}, $node; 207 push @{$wiki{lc $_}}, $node;
201 } 208 }
202} 209}
203 210
204my $root = { 211my $root;
205 kw => ["pod"], 212$root->[N_KW] = ["Documents", "pod"];
206}; 213$root->[N_DOC] = [[0, 0, ::special link => "All Documents", "pod/*"]];
207 214
208for my $path (@ARGV) { 215for my $path (@ARGV) {
209 $path =~ /([^\/\\]+)\.pod$/ or die "$path: illegal pathname"; 216 $path =~ /([^\/\\]+)\.pod$/ or die "$path: illegal pathname";
210 my $base = $1; 217 my $base = $1;
211 my $pom = Pod::POM->new->parse_text (do { 218 my $pom = Pod::POM->new->parse_text (do {
215 <$pod> 222 <$pod>
216 }); 223 });
217 224
218 my $para = as_paragraphs $pom; 225 my $para = as_paragraphs $pom;
219 226
227 my $pod;
228 $pod->[N_PARENT] = $root;
229 $pod->[N_PAR] = 0;
230 $pod->[N_LEVEL] = 1;
231 $pod->[N_KW] = [$base];
232 $pod->[N_DOC] = $para;
233
220 my @parent = ( 234 my @parent = ($pod);
221 { parent => $root, kw => [$base], doc => $para, par => 0, level => 1 },
222 );
223 add_node $parent[-1];
224 235
225 for my $idx (0 .. $#$para) { 236 for my $idx (0 .. $#$para) {
226 my $par = $para->[$idx]; 237 my $par = $para->[$idx];
227 238
228 while ($parent[-1]{level} >= $par->[P_LEVEL]) { 239 while ($parent[-1][N_LEVEL] >= $par->[P_LEVEL]) {
229 pop @parent; 240 pop @parent;
230 } 241 }
231 242
232 if ($par->[P_INDEX]) { 243 if ($par->[P_INDEX]) {
233 my $node = { 244 my $node;
234 kw => $par->[P_INDEX], 245 $node->[N_PARENT] = $parent[-1];
235 parent => $parent[-1], 246 $node->[N_PAR] = $idx;
236 doc => $para, 247 $node->[N_LEVEL] = $par->[P_LEVEL];
237 par => $idx, 248 $node->[N_KW] = $par->[P_INDEX];
238 level => $par->[P_LEVEL], 249 $node->[N_DOC] = $para;
239 };
240 push @parent, $node; 250 push @parent, $node;
241 add_node $node; 251 add_node $node;
242 } 252 }
243 } 253 }
254
255 add_node $pod;
244} 256}
257
258add_node $root;
245 259
246Storable::nstore \%wiki, "docwiki.pst"; 260Storable::nstore \%wiki, "docwiki.pst";
247 261

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines