3 package Pod::Simple::PullParserToken;
4 # Base class for tokens gotten from Pod::Simple::PullParser's $parser->get_token
9 sub new { # Class->new('type', stuff...); ## Overridden in derived classes anyway
11 return bless [@_], ref($class) || $class;
14 sub type { $_[0][0] } # Can't change the type of an object
15 sub dump { Pod::Simple::pretty( [ @{ $_[0] } ] ) }
17 sub is_start { $_[0][0] eq 'start' }
18 sub is_end { $_[0][0] eq 'end' }
19 sub is_text { $_[0][0] eq 'text' }
24 sub dump { '[' . _esc( @{ $_[0] } ) . ']' }
32 push @out, '"' . $in . '"';
33 $out[-1] =~ s/([^- \:\:\.\,\'\>\<\"\/\=\?\+\|\[\]\{\}\_a-zA-Z0-9_\`\~\!\#\%\^\&\*\(\)])/
34 sprintf( (ord($1) < 256) ? "\\x%02X" : "\\x{%X}", ord($1))
37 return join ', ', @out;
45 Pod::Simple::PullParserToken -- tokens from Pod::Simple::PullParser
49 Given a $parser that's an object of class Pod::Simple::PullParser
52 while(my $token = $parser->get_token) {
53 $DEBUG and print STDERR "Token: ", $token->dump, "\n";
54 if($token->is_start) {
55 ...access $token->tagname, $token->attr, etc...
57 } elsif($token->is_text) {
58 ...access $token->text, $token->text_r, etc...
60 } elsif($token->is_end) {
61 ...access $token->tagname...
66 (Also see L<Pod::Simple::PullParser>)
70 When you do $parser->get_token on a L<Pod::Simple::PullParser>, you should
71 get an object of a subclass of Pod::Simple::PullParserToken.
73 Subclasses will add methods, and will also inherit these methods:
79 This returns the type of the token. This will be either the string
80 "start", the string "text", or the string "end".
82 Once you know what the type of an object is, you then know what
83 subclass it belongs to, and therefore what methods it supports.
85 Yes, you could probably do the same thing with code like
86 $token->isa('Pod::Simple::PullParserEndToken'), but that's not so
87 pretty as using just $token->type, or even the following shortcuts:
89 =item $token->is_start
91 This is a shortcut for C<< $token->type() eq "start" >>
95 This is a shortcut for C<< $token->type() eq "text" >>
99 This is a shortcut for C<< $token->type() eq "end" >>
103 This returns a handy stringified value of this object. This
104 is useful for debugging, as in:
106 while(my $token = $parser->get_token) {
107 $DEBUG and print STDERR "Token: ", $token->dump, "\n";
116 L<Pod::Simple::PullParserStartToken>,
117 L<Pod::Simple::PullParserTextToken>, and
118 L<Pod::Simple::PullParserEndToken>.
120 L<Pod::Simple::PullParser> and L<Pod::Simple>
124 Questions or discussion about POD and Pod::Simple should be sent to the
125 pod-people@perl.org mail list. Send an empty email to
126 pod-people-subscribe@perl.org to subscribe.
128 This module is managed in an open GitHub repository,
129 L<https://github.com/perl-pod/pod-simple/>. Feel free to fork and contribute, or
130 to clone L<git://github.com/perl-pod/pod-simple.git> and send patches!
132 Patches against Pod::Simple are welcome. Please send bug reports to
133 <bug-pod-simple@rt.cpan.org>.
135 =head1 COPYRIGHT AND DISCLAIMERS
137 Copyright (c) 2002 Sean M. Burke.
139 This library is free software; you can redistribute it and/or modify it
140 under the same terms as Perl itself.
142 This program is distributed in the hope that it will be useful, but
143 without any warranty; without even the implied warranty of
144 merchantability or fitness for a particular purpose.
148 Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
149 But don't bother him, he's retired.
151 Pod::Simple is maintained by:
155 =item * Allison Randal C<allison@perl.org>
157 =item * Hans Dieter Pearcey C<hdp@cpan.org>
159 =item * David E. Wheeler C<dwheeler@cpan.org>