Pod::Simple::PullParserStartToken - start-tokens from Pod::Simple::PullParser


Pod-Simple documentation Contained in the Pod-Simple distribution.

Index


Code Index:

NAME

Top

Pod::Simple::PullParserStartToken -- start-tokens from Pod::Simple::PullParser

SYNOPSIS

Top

(See Pod::Simple::PullParser)

DESCRIPTION

Top

When you do $parser->get_token on a Pod::Simple::PullParser object, you might get an object of this class.

This is a subclass of Pod::Simple::PullParserToken and inherits all its methods, and adds these methods:

$token->tagname

This returns the tagname for this start-token object. For example, parsing a "=head1 ..." line will give you a start-token with the tagname of "head1", token(s) for its content, and then an end-token with the tagname of "head1".

$token->tagname(somestring)

This changes the tagname for this start-token object. You probably won't need to do this.

$token->tag(...)

A shortcut for $token->tagname(...)

$token->is_tag(somestring) or $token->is_tagname(somestring)

These are shortcuts for $token->tag() eq somestring

$token->attr(attrname)

This returns the value of the attrname attribute for this start-token object, or undef.

For example, parsing a L<Foo/"Bar"> link will produce a start-token with a "to" attribute with the value "Foo", a "type" attribute with the value "pod", and a "section" attribute with the value "Bar".

$token->attr(attrname, newvalue)

This sets the attrname attribute for this start-token object to newvalue. You probably won't need to do this.

$token->attr_hash

This returns the hashref that is the attribute set for this start-token. This is useful if (for example) you want to ask what all the attributes are -- you can just do keys %{$token->attr_hash}

You're unlikely to ever need to construct an object of this class for yourself, but if you want to, call Pod::Simple::PullParserStartToken->new( tagname, attrhash )

SEE ALSO

Top

Pod::Simple::PullParserToken, Pod::Simple, Pod::Simple::Subclassing

SEE ALSO

Top

Pod::Simple::PullParserToken, Pod::Simple, Pod::Simple::Subclassing

SUPPORT

Top

Questions or discussion about POD and Pod::Simple should be sent to the pod-people@perl.org mail list. Send an empty email to pod-people-subscribe@perl.org to subscribe.

This module is managed in an open GitHub repository, http://github.com/theory/pod-simple/. Feel free to fork and contribute, or to clone git://github.com/theory/pod-simple.git and send patches!

Patches against Pod::Simple are welcome. Please send bug reports to <bug-pod-simple@rt.cpan.org>.

COPYRIGHT AND DISCLAIMERS

Top

AUTHOR

Top

Pod::Simple was created by Sean M. Burke <sburke@cpan.org>. But don't bother him, he's retired.

Pod::Simple is maintained by:

* Allison Randal allison@perl.org
* Hans Dieter Pearcey hdp@cpan.org
* David E. Wheeler dwheeler@cpan.org

Pod-Simple documentation Contained in the Pod-Simple distribution.

require 5;
package Pod::Simple::PullParserStartToken;
use Pod::Simple::PullParserToken ();
use strict;
use vars qw(@ISA $VERSION);
@ISA = ('Pod::Simple::PullParserToken');
$VERSION = '3.16';

sub new {  # Class->new(tagname, optional_attrhash);
  my $class = shift;
  return bless ['start', @_], ref($class) || $class;
}

# Purely accessors:

sub tagname   { (@_ == 2) ? ($_[0][1] = $_[1]) : $_[0][1] }
sub tag { shift->tagname(@_) }

sub is_tagname { $_[0][1] eq $_[1] }
sub is_tag { shift->is_tagname(@_) }


sub attr_hash { $_[0][2] ||= {} }

sub attr      {
  if(@_ == 2) {      # Reading: $token->attr('attrname')
    ${$_[0][2] || return undef}{ $_[1] };
  } elsif(@_ > 2) {  # Writing: $token->attr('attrname', 'newval')
    ${$_[0][2] ||= {}}{ $_[1] } = $_[2];
  } else {
    require Carp;
    Carp::croak(
      'usage: $object->attr("val") or $object->attr("key", "newval")');
    return undef;
  }
}

1;


__END__