… | |
… | |
85 | |
85 | |
86 | sub view_textblock { |
86 | sub view_textblock { |
87 | push @result, { |
87 | push @result, { |
88 | indent => $indent * 16, |
88 | indent => $indent * 16, |
89 | level => $level, |
89 | level => $level, |
90 | markup => "$_[1]\n", |
90 | markup => flatten $_[1], |
91 | }; |
91 | }; |
92 | () |
92 | () |
93 | } |
93 | } |
94 | |
94 | |
95 | sub view_head1 { |
95 | sub view_head1 { |
… | |
… | |
183 | |
183 | |
184 | sub load_pod($) { |
184 | sub load_pod($) { |
185 | my ($path) = @_; |
185 | my ($path) = @_; |
186 | |
186 | |
187 | Coro::Storable::thaw cf::cache "cf::pod::as_paragraphs/$path" => [$path], |
187 | Coro::Storable::thaw cf::cache "cf::pod::as_paragraphs/$path" => [$path], |
188 | 1 => sub { |
188 | 2 => sub { |
189 | my ($src) = @_; |
189 | my ($src) = @_; |
190 | cf::fork_call { |
190 | cf::fork_call { |
191 | my $pod = $src->[0]; |
191 | my $pod = $src->[0]; |
192 | utf8::decode $pod; |
192 | utf8::decode $pod; |
193 | Coro::Storable::freeze pom_as_paragraphs +(Pod::POM->new->parse_text ($pod)) |
193 | Coro::Storable::freeze pom_as_paragraphs +(Pod::POM->new->parse_text ($pod)) |
194 | } |
194 | } |
195 | }; |
195 | }; |
196 | } |
196 | } |
197 | |
197 | |
|
|
198 | # format as cfpod-style text |
|
|
199 | sub as_text($) { |
|
|
200 | my ($pars) = @_; |
|
|
201 | |
|
|
202 | my $res; |
|
|
203 | |
|
|
204 | for my $par (@$pars) { |
|
|
205 | if ($par->{type} =~ /^head\d+$/) { |
|
|
206 | $res .= "B<$par->{markup}>\n\n"; |
|
|
207 | } elsif ($par->{type} eq "verbatim") { |
|
|
208 | $res .= "\n$par->{markup}\n\n"; |
|
|
209 | } elsif ($par->{type} eq "item") { |
|
|
210 | $res .= "\n* I<$par->{markup}>\n\n"; |
|
|
211 | } else { |
|
|
212 | $res .= "$par->{markup}\n\n"; |
|
|
213 | } |
|
|
214 | } |
|
|
215 | |
|
|
216 | $res |
|
|
217 | } |
|
|
218 | |
198 | 1; |
219 | 1; |
199 | |
220 | |