X-Git-Url: http://git.maemo.org/git/?p=dh-make-perl;a=blobdiff_plain;f=dev%2Fi386%2Flibpod-simple-perl%2Flibpod-simple-perl-3.07%2Flib%2FPod%2FSimple%2FSimpleTree.pm;fp=dev%2Fi386%2Flibpod-simple-perl%2Flibpod-simple-perl-3.07%2Flib%2FPod%2FSimple%2FSimpleTree.pm;h=64dd155104a92f7051bc1a351ee41b73dfdb21ce;hp=0000000000000000000000000000000000000000;hb=8977e561d8a9eae6959218b0306c9df2056a38a9;hpb=df794b845212301ea0d267c919232538bfef356a diff --git a/dev/i386/libpod-simple-perl/libpod-simple-perl-3.07/lib/Pod/Simple/SimpleTree.pm b/dev/i386/libpod-simple-perl/libpod-simple-perl-3.07/lib/Pod/Simple/SimpleTree.pm new file mode 100644 index 0000000..64dd155 --- /dev/null +++ b/dev/i386/libpod-simple-perl/libpod-simple-perl-3.07/lib/Pod/Simple/SimpleTree.pm @@ -0,0 +1,155 @@ + + +require 5; +package Pod::Simple::SimpleTree; +use strict; +use Carp (); +use Pod::Simple (); +use vars qw( $ATTR_PAD @ISA $VERSION $SORT_ATTRS); +$VERSION = '2.02'; +BEGIN { + @ISA = ('Pod::Simple'); + *DEBUG = \&Pod::Simple::DEBUG unless defined &DEBUG; +} + +__PACKAGE__->_accessorize( + 'root', # root of the tree +); + +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +sub _handle_element_start { # self, tagname, attrhash + DEBUG > 2 and print "Handling $_[1] start-event\n"; + my $x = [$_[1], $_[2]]; + if($_[0]{'_currpos'}) { + push @{ $_[0]{'_currpos'}[0] }, $x; # insert in parent's child-list + unshift @{ $_[0]{'_currpos'} }, $x; # prefix to stack + } else { + DEBUG and print " And oo, it gets to be root!\n"; + $_[0]{'_currpos'} = [ $_[0]{'root'} = $x ]; + # first event! set to stack, and set as root. + } + DEBUG > 3 and print "Stack is now: ", + join(">", map $_->[0], @{$_[0]{'_currpos'}}), "\n"; + return; +} + +sub _handle_element_end { # self, tagname + DEBUG > 2 and print "Handling $_[1] end-event\n"; + shift @{$_[0]{'_currpos'}}; + DEBUG > 3 and print "Stack is now: ", + join(">", map $_->[0], @{$_[0]{'_currpos'}}), "\n"; + return; +} + +sub _handle_text { # self, text + DEBUG > 2 and print "Handling $_[1] text-event\n"; + push @{ $_[0]{'_currpos'}[0] }, $_[1]; + return; +} + + +# A bit of evil from the black box... please avert your eyes, kind souls. +sub _traverse_treelet_bit { + DEBUG > 2 and print "Handling $_[1] paragraph event\n"; + my $self = shift; + push @{ $self->{'_currpos'}[0] }, [@_]; + return; +} +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +1; +__END__ + +=head1 NAME + +Pod::Simple::SimpleTree -- parse Pod into a simple parse tree + +=head1 SYNOPSIS + + % cat ptest.pod + + =head1 PIE + + I like B! + + % perl -MPod::Simple::SimpleTree -MData::Dumper -e \ + "print Dumper(Pod::Simple::SimpleTree->new->parse_file(shift)->root)" \ + ptest.pod + + $VAR1 = [ + 'Document', + { 'start_line' => 1 }, + [ + 'head1', + { 'start_line' => 1 }, + 'PIE' + ], + [ + 'Para', + { 'start_line' => 3 }, + 'I like ', + [ + 'B', + {}, + 'pie' + ], + '!' + ] + ]; + +=head1 DESCRIPTION + +This class is of interest to people writing a Pod processor/formatter. + +This class takes Pod and parses it, returning a parse tree made just +of arrayrefs, and hashrefs, and strings. + +This is a subclass of L and inherits all its methods. + +This class is inspired by XML::Parser's "Tree" parsing-style, although +it doesn't use exactly the same LoL format. + +=head1 METHODS + +At the end of the parse, call C<< $parser->root >> to get the +tree's top node. + +=head1 Tree Contents + +Every element node in the parse tree is represented by an arrayref of +the form: C<[ I, \%attributes, I<...subnodes...> ]>. +See the example tree dump in the Synopsis, above. + +Every text node in the tree is represented by a simple (non-ref) +string scalar. So you can test C to see whather you have +an element node or just a text node. + +The top node in the tree is C<[ 'Document', \%attributes, +I<...subnodes...> ]> + + +=head1 SEE ALSO + +L + +L + +L + +=head1 COPYRIGHT AND DISCLAIMERS + +Copyright (c) 2002 Sean M. Burke. All rights reserved. + +This library is free software; you can redistribute it and/or modify it +under the same terms as Perl itself. + +This program is distributed in the hope that it will be useful, but +without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=head1 AUTHOR + +Sean M. Burke C + +=cut +