Plack-App-MCCS
view release on metacpan or search on metacpan
local/lib/perl5/PPI/Token.pm view on Meta::CPAN
package PPI::Token;
=pod
=head1 NAME
PPI::Token - A single token of Perl source code
=head1 INHERITANCE
PPI::Token
isa PPI::Element
=head1 DESCRIPTION
C<PPI::Token> is the abstract base class for all Tokens. In PPI terms, a "Token" is
a L<PPI::Element> that directly represents bytes of source code.
=head1 METHODS
=cut
use strict;
use Params::Util qw{_INSTANCE};
use PPI::Element ();
use PPI::Exception ();
our $VERSION = '1.276';
our @ISA = 'PPI::Element';
# We don't load the abstracts, they are loaded
# as part of the inheritance process.
# Load the token classes
use PPI::Token::BOM ();
use PPI::Token::Whitespace ();
use PPI::Token::Comment ();
use PPI::Token::Pod ();
use PPI::Token::Number ();
use PPI::Token::Number::Binary ();
use PPI::Token::Number::Octal ();
use PPI::Token::Number::Hex ();
use PPI::Token::Number::Float ();
use PPI::Token::Number::Exp ();
use PPI::Token::Number::Version ();
use PPI::Token::Word ();
use PPI::Token::DashedWord ();
use PPI::Token::Symbol ();
use PPI::Token::ArrayIndex ();
use PPI::Token::Magic ();
use PPI::Token::Quote::Single ();
use PPI::Token::Quote::Double ();
use PPI::Token::Quote::Literal ();
use PPI::Token::Quote::Interpolate ();
use PPI::Token::QuoteLike::Backtick ();
use PPI::Token::QuoteLike::Command ();
use PPI::Token::QuoteLike::Regexp ();
use PPI::Token::QuoteLike::Words ();
use PPI::Token::QuoteLike::Readline ();
use PPI::Token::Regexp::Match ();
use PPI::Token::Regexp::Substitute ();
use PPI::Token::Regexp::Transliterate ();
use PPI::Token::Operator ();
use PPI::Token::Cast ();
use PPI::Token::Structure ();
use PPI::Token::Label ();
use PPI::Token::HereDoc ();
use PPI::Token::Separator ();
use PPI::Token::Data ();
use PPI::Token::End ();
use PPI::Token::Prototype ();
use PPI::Token::Attribute ();
use PPI::Token::Unknown ();
#####################################################################
# Constructor and Related
sub new {
bless { content => (defined $_[1] ? "$_[1]" : '') }, $_[0];
}
sub set_class {
my $self = shift;
# @_ or throw Exception("No arguments to set_class");
my $class = substr( $_[0], 0, 12 ) eq 'PPI::Token::' ? shift : 'PPI::Token::' . shift;
# Find out if the current and new classes are complex
my $old_quote = (ref($self) =~ /\b(?:Quote|Regex)\b/o) ? 1 : 0;
my $new_quote = ($class =~ /\b(?:Quote|Regex)\b/o) ? 1 : 0;
# No matter what happens, we will have to rebless
( run in 0.861 second using v1.01-cache-2.11-cpan-ceb78f64989 )