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>