PPIx::Regexp::Token::CharClass::POSIX - Represent a POSIX character class


PPIx-Regexp documentation Contained in the PPIx-Regexp distribution.

Index


Code Index:

NAME

Top

PPIx::Regexp::Token::CharClass::POSIX - Represent a POSIX character class

SYNOPSIS

Top

 use PPIx::Regexp::Dumper;
 PPIx::Regexp::Dumper->new( 'qr{ [[:alpha:]] }smx' )
     ->print();

INHERITANCE

Top

PPIx::Regexp::Token::CharClass::POSIX is a PPIx::Regexp::Token::CharClass.

PPIx::Regexp::Token::CharClass::POSIX has no descendants.

DESCRIPTION

Top

This class represents a POSIX character class. It will only be recognized within a character class.

Note that collating symbols (e.g. [.ch.]) and equivalence classes (e.g. [=a=]) are valid in the POSIX standard, but are not valid in Perl regular expressions. These end up being represented by PPIx::Regexp::Token::CharClass::Posix::Unknown (PPIx::Regexp::Token::CharClass::Posix::Unknown), and are considered a parse failure.

METHODS

Top

This class provides no public methods beyond those provided by its superclass.

SUPPORT

Top

Support is by the author. Please file bug reports at http://rt.cpan.org, or in electronic mail to the author.

AUTHOR

Top

Thomas R. Wyant, III wyant at cpan dot org

COPYRIGHT AND LICENSE

Top


PPIx-Regexp documentation Contained in the PPIx-Regexp distribution.
package PPIx::Regexp::Token::CharClass::POSIX;

use strict;
use warnings;

use base qw{ PPIx::Regexp::Token::CharClass };

use PPIx::Regexp::Constant qw{ COOKIE_CLASS MINIMUM_PERL };

our $VERSION = '0.020';

# Return true if the token can be quantified, and false otherwise
# sub can_be_quantified { return };

sub perl_version_introduced {
#   my ( $self ) = @_;
    return '5.006';
}

{

    my %class = (
	':' => __PACKAGE__,
    );

    sub __PPIX_TOKENIZER__regexp {
	my ( $class, $tokenizer, $character ) = @_;

	$tokenizer->cookie( COOKIE_CLASS ) or return;

	if ( my $accept = $tokenizer->find_regexp(
		qr{ \A [[] ( [.=:] ) \^? .*? \1 []] }smx ) ) {
	    my ( $punc ) = $tokenizer->capture();
	    return $tokenizer->make_token( $accept,
		$class{$punc} || __PACKAGE__ . '::Unknown' );
	}

	return;

    }

}

1;

__END__

# ex: set textwidth=72 :