HCKit-Template

 view release on metacpan or  search on metacpan

Template.pm  view on Meta::CPAN

sub parse_data_body {
    my ($self, $body, $env) = @_;
    my %hash;
    my $text;
    my $last = 0;
    while( $body =~ 
	   /(<([\w-]+)>(.*?)<\/\2> |
	     <\*(.*?)\*> |
	     (<!\[\[CDATA\[.*\]\]>)
	     )/gsx ){
	my ($match, $sym, $val, $cmd, $cdata) = ($1,$2,$3,$4,$5);
	my $len = length($match);
	my $pre = substr($body, $last, pos($body)-$len-$last);
	$text .= $pre;
	$last = pos($body);
	if( $sym ){
	    my $sub = $self->parse_data_body($val, $env);
	    extend_data($sym, $sub, \%hash);
	}
	elsif( $cdata ){
	    $cdata =~ s/^<!\[\[CDATA\[//;
	    $cdata =~ s/\]\]>$//;
	    $text .= $cdata;
	}
	else{
	    my ($key, $aux) = 
		$cmd =~ /\s*([\w:.-]+)\s*(.*)/;
	    my $val = $self->eval_var($key, $aux, $env);
	    if( ref($val) eq "HASH" ){
		while( my ($sym, $sub) = each %$val ){
		    extend_data($sym, $sub, \%hash);
		}
	    }



( run in 0.293 second using v1.01-cache-2.11-cpan-454fe037f31 )