Marc - Sebastian Lucksch > Dotiac-0.8_1 > Dotiac::DTL::Parser

Download:
dotiac/Dotiac-0.8_1.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  1
Open  0
View/Report Bugs
Module Version: 0.8   Source  

NAME ^

Dotiac::DTL::Parser - The default Django/Dotiac parser

SYNOPSIS ^

        require Dotiac::DTL;
        $t=Dotiac::DTL->new("file.html")
        $t->print();

Static methods

new(FILE) or new(FILE,COMPILE)

Creates a new empty Dotiac::DTL::Parser, used by Dotiac::DTL->new().

Methods

parse(TEMPLATEREF,POSITIONREF, [FOUNDREF, List,of,endtags,to,look,for])

Parses the string referenced in TEMPLATEREF starting at the position referenced in POSITIONREF.

Returns the parsed templatedata if either one of the endtags is found (and sets FOUNDREF to the endtag) or the end of the string is reached.

This is used by tags to look for their endtag. For example the ifequal tag:

        sub new {
                my $class=shift;
                my $self={p=>shift()}; #Text that came before the tag.
                my $data=shift; #Content of the tag other than the name.
                my $obj=shift;
                my $data=shift; #Templatedataref
                my $pos=shift;  #and positionref from the parse() calling this tags new().
                my $found=""; #Empty found
                $self->{true}=$obj->parse($data,$pos,\$found,"else","endifequal"); #Search for either "else" or "endifequal" and set it to $found.
                if ($found eq "else") {
                        $self->{false}=$obj->parse($data,$pos,\$found,"endifequal"); #If "else" was found, search for "endifequal"
                }
                ($self->{var1},$self->{var2},undef)=Dotiac::DTL::get_variables($data);
                bless $self,$class;
                return $self;
        }
        #....

Note

Dotiac::DTL::Reduced doesn't support this, so it doesn't have to load all the tags or the parser.

unparsed(TEMPLATEREF,POSITIONREF, [FOUNDREF, STARTTAG, List,of,endtags,to,look,for])

Parses the string referenced in TEMPLATEREF starting at the position referenced in POSITIONREF.

Returns the unparsed templatedata if either one of the endtags is found (and sets FOUNDREF to the endtag) or the end of the string is reached.

Skips STARTTAG occurences and searches for additional endtags

This is used by tags to look for their endtag. For example an unparsed tag:

        sub new {
                my $class=shift;
                my $self={p=>shift()}; #Text that came before the tag.
                my $data=shift; #Content of the tag other than the name.
                my $obj=shift;
                my $data=shift; #Templatedataref
                my $pos=shift;  #and positionref from the parse() calling this tags new().
                my $found=""; #Empty found
                $self->{content}=$obj->unparsed($data,$pos,\$found,"unparsed","endunparsed");
                bless $self,$class;
                return $self;
        }
        #....

Note

There is no internal tag for now that needs this. But you might find some addons.

I planned this for a addon like Calypso DTL's {% ajax %} tag, that throws the unparsed template at DojoxDTL to render it in the browser.

Dotiac::DTL::Reduced doesn't support this either.

SEE ALSO ^

http://www.djangoproject.com, Dotiac::DTL

BUGS ^

If you find a bug, please report it.

LEGAL ^

Dotiac::DTL was built according to http://docs.djangoproject.com/en/dev/ref/templates/builtins/.

AUTHOR ^

Marc-Sebastian Lucksch

perl@marc-s.de

syntax highlighting: