[system] / trunk / pg / lib / Parser / Context / Parens.pm Repository:
ViewVC logotype

View of /trunk/pg/lib/Parser/Context/Parens.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5124 - (download) (as text) (annotate)
Wed Jul 4 20:13:03 2007 UTC (5 years, 10 months ago) by dpvc
File size: 961 byte(s)
Make the patterns be pre-compiled patterns for efficiency.

    1 #########################################################################
    2 #
    3 #  Implement the list of allowed parentheses.
    4 #
    5 package Parser::Context::Parens;
    6 use strict;
    7 our @ISA = qw(Value::Context::Data);
    8 
    9 sub init {
   10   my $self = shift;
   11   $self->{dataName} = 'parens';
   12   $self->{name} = 'parenthesis';
   13   $self->{Name} = 'Parenthesis';
   14   $self->{namePattern} = qr/\S+/;
   15 }
   16 
   17 sub addToken {
   18   my $self = shift; my $token = shift;
   19   my $data = $self->{context}{$self->{dataName}}{$token};
   20   unless ($data->{hidden}) {
   21     $self->{tokens}{$token} = "open";
   22     $self->{tokens}{$data->{close}} = "close" unless $data->{close} eq $token;
   23   }
   24 }
   25 
   26 sub removeToken {
   27   my $self = shift; my $token = shift;
   28   my $data = $self->{context}{$self->{dataName}}{$token};
   29   delete $self->{tokens}{$token};
   30   delete $self->{tokens}{$data->{close}} unless $data->{hidden} || $data->{close} eq $token;
   31 }
   32 
   33 #########################################################################
   34 
   35 1;

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9