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.10 by root, Sat Sep 9 23:31:58 2006 UTC vs.
Revision 1.11 by root, Tue Mar 25 01:46:36 2008 UTC

46package AsParagraphs; 46package AsParagraphs;
47 47
48use strict; 48use strict;
49 49
50use base "Pod::POM::View"; 50use base "Pod::POM::View";
51
52# nodes (order must stay as it is)
53sub N_PARENT (){ 0 }
54sub N_PAR (){ 1 }
55sub N_LEVEL (){ 2 }
56sub N_KW (){ 3 }
57sub N_DOC (){ 4 }
58
59# paragraphs (order must stay as it is)
60sub P_INDENT (){ 0 }
61sub P_LEVEL (){ 1 }
62sub P_MARKUP (){ 2 }
63sub P_INDEX (){ 3 }
51 64
52*view_seq_file = 65*view_seq_file =
53*view_seq_code = 66*view_seq_code =
54*view_seq_bold = sub { "<b>$_[1]</b>" }; 67*view_seq_bold = sub { "<b>$_[1]</b>" };
55*view_seq_italic = sub { "<i>$_[1]</i>" }; 68*view_seq_italic = sub { "<i>$_[1]</i>" };
56*view_seq_zero = sub { }; 69*view_seq_zero = sub { };
57*view_seq_space = sub { my $text = $_[1]; $text =~ s/ /&#160;/g; $text }; 70*view_seq_space = sub { my $text = $_[1]; $text =~ s/ /&#160;/g; $text };
58*view_seq_index = sub { push @{ $result[-1]{index} }, $_[1]; "" }; 71*view_seq_index = sub { push @{ $result[-1][P_INDEX] }, $_[1]; "" };
59 72
60sub view_seq_text { 73sub view_seq_text {
61 my $text = $_[1]; 74 my $text = $_[1];
62 $text =~ s/\s+/ /g; 75 $text =~ s/\s+/ /g;
63 ::asxml $text 76 ::asxml $text
79 ::special link => $text, $link 92 ::special link => $text, $link
80 } 93 }
81} 94}
82 95
83sub view_item { 96sub view_item {
84 push @result, { 97 push @result, [
85 indent => $indent * 8, 98 $indent * 8,
86 level => $level, 99 $level,
87 }; 100 ];
88 my $title = $_[1]->title->present ($_[0]); 101 my $title = $_[1]->title->present ($_[0]);
89 $result[-1]{markup} = "$title\n" if length $title; 102 $result[-1][P_MARKUP] = "$title\n" if length $title;
90 $title = ::flatten $title; unshift @{ $result[-1]{index} }, $title if length $title; 103 $title = ::flatten $title; unshift @{ $result[-1][P_INDEX] }, $title if length $title;
91 local $level = $level + 1; 104 local $level = $level + 1;
92 $_[1]->content->present ($_[0]); 105 $_[1]->content->present ($_[0]);
93 () 106 ()
94} 107}
95 108
96sub view_verbatim { 109sub view_verbatim {
97 push @result, { 110 push @result, [ $indent * 16, $level, "<tt>" . (::asxml $_[1]) . "</tt>\n" ];
98 indent => $indent * 16,
99 level => $level,
100 markup => "<tt>" . (::asxml $_[1]) . "</tt>\n",
101 };
102 () 111 ()
103} 112}
104 113
105sub view_textblock { 114sub view_textblock {
106 push @result, { 115 push @result, [ $indent * 16, $level, "$_[1]\n" ];
107 indent => $indent * 16,
108 level => $level,
109 markup => "$_[1]\n",
110 };
111 () 116 ()
112} 117}
113 118
114sub view_head1 { 119sub view_head1 {
115 push @result, { 120 push @result, [ $indent * 16, $level ];
116 indent => $indent * 16,
117 level => $level,
118 };
119 my $title = $_[1]->title->present ($_[0]); 121 my $title = $_[1]->title->present ($_[0]);
120 $result[-1]{markup} = "\n\n<span foreground='#ffff00' size='x-large'>$title</span>\n" if length $title; 122 $result[-1][P_MARKUP] = "\n\n<span foreground='#ffff00' size='x-large'>$title</span>\n" if length $title;
121 $title = ::flatten $title; unshift @{ $result[-1]{index} }, $title if length $title; 123 $title = ::flatten $title; unshift @{ $result[-1][P_INDEX] }, $title if length $title;
122 local $level = $level + 1; 124 local $level = $level + 1;
123 $_[1]->content->present ($_[0]); 125 $_[1]->content->present ($_[0]);
124 () 126 ()
125}; 127};
126 128
127sub view_head2 { 129sub view_head2 {
128 push @result, { 130 push @result, [ $indent * 16, $level ];
129 indent => $indent * 16,
130 level => $level,
131 };
132 my $title = $_[1]->title->present ($_[0]); 131 my $title = $_[1]->title->present ($_[0]);
133 $result[-1]{markup} = "\n\n<span foreground='#ccccff' size='large'>$title</span>\n" if length $title; 132 $result[-1][P_MARKUP] = "\n\n<span foreground='#ccccff' size='large'>$title</span>\n" if length $title;
134 $title = ::flatten $title; unshift @{ $result[-1]{index} }, $title if length $title; 133 $title = ::flatten $title; unshift @{ $result[-1][P_INDEX] }, $title if length $title;
135 local $level = $level + 1; 134 local $level = $level + 1;
136 $_[1]->content->present ($_[0]); 135 $_[1]->content->present ($_[0]);
137 () 136 ()
138}; 137};
139 138
140sub view_head3 { 139sub view_head3 {
141 push @result, { 140 push @result, [ $indent * 16, $level ];
142 indent => $indent * 16,
143 level => $level,
144 };
145 my $title = $_[1]->title->present ($_[0]); 141 my $title = $_[1]->title->present ($_[0]);
146 $result[-1]{markup} = "\n\n<span size='large'>$title</span>\n" if length $title; 142 $result[-1][P_MARKUP] = "\n\n<span size='large'>$title</span>\n" if length $title;
147 $title = ::flatten $title; unshift @{ $result[-1]{index} }, $title if length $title; 143 $title = ::flatten $title; unshift @{ $result[-1][P_INDEX] }, $title if length $title;
148 local $level = $level + 1; 144 local $level = $level + 1;
149 $_[1]->content->present ($_[0]); 145 $_[1]->content->present ($_[0]);
150 () 146 ()
151}; 147};
152 148
153sub view_over { 149sub view_over {
154 local $indent = $indent + $_[1]->indent; 150 local $indent = $indent + $_[1]->indent;
155 push @result, { indent => $indent }; 151 push @result, [ $indent, $level ];
152 local $level = $level + 1;
156 $_[1]->content->present ($_[0]); 153 $_[1]->content->present ($_[0]);
157 () 154 ()
158} 155}
159 156
160sub view_for { 157sub view_for {
161 if ($_[1]->format eq "image") { 158 if ($_[1]->format eq "image") {
162 push @result, { 159 push @result, [
163 indent => $indent * 16, 160 $indent * 16,
164 level => $level, 161 $level,
165 markup => (::special image => "pod/" . $_->text), 162 (::special image => "pod/" . $_->text),
166 }; 163 ];
167 } 164 }
168 () 165 ()
169} 166}
170 167
171sub view_begin { 168sub view_begin {
182 179
183sub as_paragraphs($) { 180sub as_paragraphs($) {
184 my ($pom) = @_; 181 my ($pom) = @_;
185 182
186 local $indent = 0; 183 local $indent = 0;
187 local $level = 1; 184 local $level = 2;
188 local @result = ( { } ); 185 local @result = ( [] );
189 186
190 $pom->present ("AsParagraphs"); 187 $pom->present ("AsParagraphs");
191 188
192 [grep $_->{index} || exists $_->{markup}, @result] 189 [grep $_->[P_INDEX] || defined $_->[P_MARKUP], @result]
193} 190}
194 191
195############################################################################# 192#############################################################################
196 193
197my %wiki; 194my %wiki;
219 }); 216 });
220 217
221 my $para = as_paragraphs $pom; 218 my $para = as_paragraphs $pom;
222 219
223 my @parent = ( 220 my @parent = (
224 { parent => $root, kw => [$base], doc => $para, par => 0, level => 0 }, 221 { parent => $root, kw => [$base], doc => $para, par => 0, level => 1 },
225 ); 222 );
226 add_node $parent[-1]; 223 add_node $parent[-1];
227 224
228 for my $idx (0 .. $#$para) { 225 for my $idx (0 .. $#$para) {
229 my $par = $para->[$idx]; 226 my $par = $para->[$idx];
230 227
231 while ($parent[-1]{level} >= $par->{level}) { 228 while ($parent[-1]{level} >= $par->[P_LEVEL]) {
232 pop @parent; 229 pop @parent;
233 } 230 }
234 231
235 if ($par->{index}) { 232 if ($par->[P_INDEX]) {
236 my $node = { 233 my $node = {
237 kw => $par->{index}, 234 kw => $par->[P_INDEX],
238 parent => $parent[-1], 235 parent => $parent[-1],
239 doc => $para, 236 doc => $para,
240 par => $idx, 237 par => $idx,
241 level => $par->{level}, 238 level => $par->[P_LEVEL],
242 }; 239 };
243 push @parent, $node; 240 push @parent, $node;
244 add_node $node; 241 add_node $node;
245 } 242 }
246 } 243 }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines