#!/usr/bin/perl -p sub escape_texi($) { local $_ = shift; s/([\@\{\}])/\@$1/g; s/\n+/ /g; $_; } while (<>) { if (/^\@c INCLUDE (\S+)/) { my $name = $1; my $pod = "$name.pod"; $name =~ s/\.(\d)$/($1)/; print "\@chapter $name\n\n"; open $x, "<$pod" or die "$pod: $!"; use Pod::Tree; my $pod = new Pod::Tree; $pod->load_string(do { local $/; <$x> }); my $walker; $walker = sub { my $n = $_[0]; if ($n->is_code) { # nop } elsif ($n->is_link) { my $target = $n->get_target; my $page = $target->get_page; my $section = $target->get_section; #print ""; $walker->($_) for @{$n->get_children}; #print ""; } elsif ($n->is_text) { print escape_texi $n->get_text; } elsif ($n->is_verbatim) { print "\n\n\@verbatim\n"; my $text = $n->get_text; $text =~ s/\n+$//; print $text; print "\n\@end verbatim\n\n"; } elsif ($n->is_sequence) { if ($n->get_letter eq "C") { print "\@t{"; $walker->($_) for @{$n->get_children}; print "}"; } elsif ($n->get_letter eq "B") { print "\@strong{"; $walker->($_) for @{$n->get_children}; print "}"; } elsif ($n->get_letter eq "I" or $n->get_letter eq "F") { print "\@emph{"; $walker->($_) for @{$n->get_children}; print "}"; } else { # S would mean to use nbsp $walker->($_) for @{$n->get_children}; } } elsif ($n->is_command) { if ($n->is_c_head1) { print "\n\@subsection "; $walker->($_) for @{$n->get_children}; print "\n"; } elsif ($n->is_c_head2) { print "\n\n\@subsubsection "; $walker->($_) for @{$n->get_children}; print "\n"; } else { # nop? } } elsif ($n->is_ordinary) { $walker->($_) for @{$n->get_children}; print "\@refill\n"; } elsif ($n->is_root) { $walker->($_) for @{$n->get_children}; } elsif ($n->is_list) { print "\n\n\@itemize\n"; $walker->($_) for @{$n->get_children}; print "\@end itemize\n\n"; } elsif ($n->is_item) { print "\n\n\@item\n"; print "\@b{"; $walker->($_) for @{$n->get_children}; print "}\n\n"; $walker->($_) for @{$n->get_siblings}; } else { die "UNKNOWN NODE $_[0]{type}
"; $walker->($_) for @{$n->get_children}; } }; $walker->($pod->get_root); } else { print; } }