Changeset 22873 for src

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

[STD_syntax_highlight] re-factored --simple-html for easier support of
[STD_syntax_highlight] future output formats

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/perl6/STD_syntax_highlight

    r22864 r22873  
    307307HTML 
    308308 
     309    local *spit_simple_html = sub { 
     310        my ($buffer, $rule) = @ARG; 
     311        if($rule) { 
     312            $str .= qq{<span class="$rule">$buffer</span>}; 
     313        } else { 
     314            $str .= $buffer; 
     315        } 
     316    }; 
     317 
     318    redspans_traverse(\&spit_simple_html,%colors);  
     319 
     320    $str .= <<"HTML"; 
     321    </pre> 
     322</body> 
     323</html> 
     324HTML 
     325 
     326   $str; 
     327} 
     328 
     329=item redspans_traverse 
     330    XXX- document 
     331=cut 
     332sub redspans_traverse($%) { 
     333    my ($process_buffer,%colors) = @ARG; 
     334 
    309335    my ($last_tree,$buffer) = ("",""); 
    310336    for my $i (0 .. @loc-1) { 
     
    318344            my $rule; 
    319345            my $rule_to_color = 0; 
    320             $buffer = escape_html($buffer); 
     346            $buffer = $buffer; 
    321347            my @rules = (); 
    322348            @rules = reverse(split / /,$last_tree) if $last_tree ne ''; 
     
    333359                if($last_tree =~ /identifier/) { 
    334360                    if($parser->is_type($buffer)) { 
    335                         $str .= qq{<span class="_type">$buffer</span>}; 
     361                        $rule_to_color = '_type'; 
    336362                    } elsif($parser->is_routine($buffer)) { 
    337                         $str .= qq{<span class="_routine">$buffer</span>}; 
    338                     } else { 
    339                         $str .= qq{<span class="$rule_to_color">$buffer</span>}; 
    340                     } 
    341                 } else {               
    342                     $str .= qq{<span class="$rule_to_color">$buffer</span>}; 
    343                 } 
    344             } else { 
    345                 $str .= qq{$buffer}; 
     363                        $rule_to_color = '_routine'; 
     364                    }  
     365                }               
    346366            } 
     367            #now delegate printing to a callback 
     368            $process_buffer->($buffer, $rule_to_color);  
    347369            $buffer = $c; 
    348370        } else { 
     
    351373        $last_tree = $tree; 
    352374    } 
    353     $str .= <<"HTML"; 
    354     </pre> 
    355 </body> 
    356 </html> 
    357 HTML 
    358  
    359    $str; 
    360375} 
    361376