Template-LiquidX-Tidy

 view release on metacpan or  search on metacpan

lib/Template/LiquidX/Tidy/impl.pm  view on Meta::CPAN

#           closed_tags /
#           level at return time
# returns a list of [ level, fragment ] pairs and modifies $stack
sub _tidy_html ($html, $args, $level, $clevel, $stack) {
    #print ((" " x $clevel ). "_tidy_html <<$html>> <<$level>>\n");
    my $nl = $html =~ /\n/;
    my @return;
    my $last_line_start = 0;
    my $start_level = $level;
    my $level_change = '';
    while ($html =~ m{(?: (?<cdata> <!\[CDATA\[(.*?)\]\]> )
		        | (?<nl> \n )
			| (?<close2> />)
		        | <(?<close> /)? (?<tag> \w+ )
			) }gsx) {
	#use Data::Dumper; warn Dumper \%+;
	if ($+{cdata}) {
	    # ignore
	}
	elsif (length $+{nl}) {
	    1 while $level_change =~ s/\(\)//;
	    push @return, [ $start_level - ($level_change =~ y/)//), (substr $html, $last_line_start, (pos $html) - $last_line_start),
			    +{ html => 1,
			       ($stack->{open_tags} ? (open => [$stack->{open_tags}->@*]) : ()),
			       ($stack->{closed_tags} ? (closed => [$stack->{closed_tags}->@*]) : ()), } ];
	    $last_line_start = pos($html);
	    $start_level = $level;



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