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 "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 "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>
122
=head1 COPYRIGHT AND DISCLAIMERS
124
Copyright (c) 2002 Sean M. Burke. All rights reserved.
126
This library is free software; you can redistribute it and/or modify it
127
under the same terms as Perl itself.
129
This program is distributed in the hope that it will be useful, but
130
without any warranty; without even the implied warranty of
131
merchantability or fitness for a particular purpose.
135
Sean M. Burke C<sburke@cpan.org>