Changeset 22874 for src

Show
Ignore:
Timestamp:
11/04/08 18:38:22 (2 months ago)
Author:
azawawi
Message:

[STD_syntax_highlight] more refactorings... --full-html and --simple-html

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/perl6/STD_syntax_highlight

    r22873 r22874  
    210210HTML 
    211211 
    212     my ($last_tree,$buffer) = ("",""); 
    213     for my $i (0 .. @loc-1) { 
    214         next unless defined $loc[$i]; 
    215         my $c = substr($src_text,$i,1); 
    216         my $tree = ""; 
    217         for my $action_ref (@{$loc[$i]}) { 
    218             $tree .= ${$action_ref} . " "; 
    219         } 
    220         if($tree ne $last_tree) { 
    221             $str .= qq{<span id="tree_$i" style="display:none;">$last_tree</span>}; 
    222             my $rule; 
    223             my $rule_to_color = 0; 
    224             $buffer = escape_html($buffer); 
    225             my @rules = (); 
    226             @rules = reverse(split / /,$last_tree) if $last_tree ne ''; 
    227             for $rule (@rules) { 
    228                 if($rule eq 'unv') { 
    229                     $rule_to_color = '_comment'; 
    230                     last; 
    231                 } elsif($colors{$rule} && $buffer ne '') { 
    232                     $rule_to_color = $rule; 
    233                     last; 
    234                 } 
    235             } 
    236             if($rule_to_color) { 
    237                 if($last_tree =~ /identifier/) { 
    238                     if($parser->is_type($buffer)) { 
    239                         $str .= qq{<span id="node_$i" class="_type">$buffer</span>}; 
    240                     } elsif($parser->is_routine($buffer)) { 
    241                         $str .= qq{<span id="node_$i" class="_routine">$buffer</span>}; 
    242                     } else { 
    243                         $str .= qq{<span id="node_$i" class="$rule_to_color">$buffer</span>}; 
    244                     } 
    245                 } else {               
    246                     $str .= qq{<span id="node_$i" class="$rule_to_color">$buffer</span>}; 
    247                 } 
    248             } else { 
    249                 $str .= qq{<span id="node_$i">$buffer</span>}; 
    250             } 
    251             $buffer = $c; 
     212    local *spit_full_html = sub { 
     213        my ($i, $buffer, $rule, $tree) = @ARG; 
     214        $buffer = escape_html($buffer); 
     215        $str .= qq{<span id="tree_$i" style="display:none;">$tree</span>}; 
     216        if($rule) { 
     217            $str .= qq{<span id="node_$i" class="$rule">$buffer</span>}; 
    252218        } else { 
    253             $buffer .= $c; 
    254         } 
    255         $last_tree = $tree; 
    256     } 
     219            $str .= $buffer; 
     220        } 
     221    }; 
     222 
     223    redspans_traverse(\&spit_full_html,%colors);  
     224 
    257225    $str .= <<"HTML"; 
    258226    </pre> 
     
    308276 
    309277    local *spit_simple_html = sub { 
    310         my ($buffer, $rule) = @ARG; 
     278        my ($i, $buffer, $rule, $tree) = @ARG; 
     279        $buffer = escape_html($buffer); 
    311280        if($rule) { 
    312281            $str .= qq{<span class="$rule">$buffer</span>}; 
     
    366335            } 
    367336            #now delegate printing to a callback 
    368             $process_buffer->($buffer, $rule_to_color);  
     337            $process_buffer->($i, $buffer, $rule_to_color, $last_tree);  
    369338            $buffer = $c; 
    370339        } else {