PPI::Token::Quote.3pm

Langue: en

Version: 2008-05-14 (debian - 07/07/09)

Section: 3 (Bibliothèques de fonctions)

NAME

PPI::Token::Quote - String quote abstract base class

INHERITANCE

   PPI::Token::Quote
   isa PPI::Token
       isa PPI::Element
 
 

DESCRIPTION

The "PPI::Token::Quote" class is never instantiated, and simply provides a common abstract base class for the four quote classes. In PPI, a ``quote'' is limited to only the quote-like things that themselves directly represent a string. (although this includes double quotes with interpolated elements inside them).

The subclasses of "PPI::Token::Quote" are:

'' - PPI::Token::Quote::Single
"q{}" - PPI::Token::Quote::Literal
"" - PPI::Token::Quote::Double
"qq{}" - PPI::Token::Quote::Interpolate

The names are hopefully obvious enough not to have to explain what each class is here. See their respective pages for more details.

Please note that although the here-doc does represent a literal string, it is such a nasty piece of work that in PPI it is given the honor of its own token class (PPI::Token::HereDoc).

METHODS


string

The "string" method is provided by all four ::Quote classes. It won't get you the actual literal Perl value, but it will strip off the wrapping of the quotes.

   # The following all return foo from the ->string method
   'foo'
   "foo"
   q{foo}
   qq <foo>
 
 

# Prove what we say in the ->string docs my $Document = PPI::Document->new(\<<'END_PERL');
  'foo'
  ``foo''
  q{foo}
  qq <foo> END_PERL isa_ok( $Document, 'PPI::Document' );

my $quotes = $Document->find('Token::Quote'); is( ref($quotes), 'ARRAY', 'Found quotes' ); is( scalar(@$quotes), 4, 'Found 4 quotes' ); foreach my $Quote ( @$quotes ) {         isa_ok( $Quote, 'PPI::Token::Quote');
        can_ok( $Quote, 'string' );
        is( $Quote->string, 'foo', '->string returns ``foo'' for '
                . $Quote->content );
}

literal

The "literal" method is provided by ::Quote:Literal and ::Quote::Single. This returns the value of the string as Perl sees it: without the quote marks and with "\\" and "\'" resolved to "\" and "'".

The "literal" method is not implemented by ::Quote::Double or ::Quote::Interpolate yet.

SUPPORT

See the support section in the main module.

AUTHOR

Adam Kennedy <adamk@cpan.org> Copyright 2001 - 2008 Adam Kennedy.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

The full text of the license can be found in the LICENSE file included with this module.

POD ERRORS

Hey! The above document had some coding errors, which are explained below:
Around line 77:
'=begin' only takes one parameter, not several as in '=begin testing string 15'
Around line 98:
=end testing without matching =begin. (Stack: [empty])