package C4::TmplTokenType; use strict; #use warnings; FIXME - Bug 2505 require Exporter; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); ############################################################################### =head1 NAME C4::TmplTokenType.pm - Types of TmplToken objects =head1 DESCRIPTION This is a Java-style "safe enum" singleton class for types of TmplToken objects. The predefined constants are =cut ############################################################################### $VERSION = 0.01; @ISA = qw(Exporter); @EXPORT_OK = qw( &TEXT &TEXT_PARAMETRIZED &CDATA &TAG &DECL &PI &DIRECTIVE &COMMENT &UNKNOWN ); ############################################################################### use vars qw( $_text $_text_parametrized $_cdata $_tag $_decl $_pi $_directive $_comment $_null $_unknown ); BEGIN { my $new = sub { my $this = 'C4::TmplTokenType';#shift; my $class = ref($this) || $this; my $self = {}; bless $self, $class; ($self->{'id'}, $self->{'name'}, $self->{'desc'}) = @_; return $self; }; $_text = &$new(0, 'TEXT'); $_text_parametrized = &$new(8, 'TEXT-PARAMETRIZED'); $_cdata = &$new(1, 'CDATA'); $_tag = &$new(2, 'TAG'); $_decl = &$new(3, 'DECL'); $_pi = &$new(4, 'PI'); $_directive = &$new(5, 'DIRECTIVE'); $_comment = &$new(6, 'COMMENT'); $_unknown = &$new(7, 'UNKNOWN'); } sub to_string { my $this = shift; return $this->{'name'} } sub TEXT () { $_text } sub TEXT_PARAMETRIZED () { $_text_parametrized } sub CDATA () { $_cdata } sub TAG () { $_tag } sub DECL () { $_decl } sub PI () { $_pi } sub DIRECTIVE () { $_directive } sub COMMENT () { $_comment } sub UNKNOWN () { $_unknown } ############################################################################### =over =item TEXT normal text (#text in the DTD) =item TEXT_PARAMETRIZED parametrized normal text (result of simple recognition of text interspersed with directives; this has to be explicitly enabled in the scanner) =item CDATA normal text (CDATA in the DTD) =item TAG something that has the form of an HTML tag =item DECL something that has the form of an SGML declaration =item PI something that has the form of an SGML processing instruction =item DIRECTIVE a Template Toolkit directive =item COMMENT something that has the form of an HTML comment (and is not recognized as an HTML::Template directive) =item UNKNOWN something that is not recognized at all by the scanner =back Note that end of file is currently represented by undef, instead of a constant predefined by this module. =cut 1;