/[suikacvs]/markup/html/whatpm/What/mkhtmlparser.pl
Suika

Diff of /markup/html/whatpm/What/mkhtmlparser.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by wakaba, Sat Apr 28 14:29:01 2007 UTC revision 1.3 by wakaba, Mon Apr 30 12:06:12 2007 UTC
# Line 1  Line 1 
1  #!/usr/bin/perl  #!/usr/bin/perl
2  use strict;  use strict;
3    
 my $consume_entity_file_name = 'HTML-consume-entity.src';  
   
4  while (<>) {  while (<>) {
5    s/!!!emit\b/return /;    s/!!!emit\b/return /;
   s{!!!consume-entity\}}{  
     open my $consume_entity_file, '<', $consume_entity_file_name  
       or die "$0: $consume_entity_file_name: $!";  
     my $r = '';  
     while (defined (my $l = <$consume_entity_file>)) {  
       $r .= $l unless $l =~ /<javascript:/;  
     }  
     $r;  
   }e;  
6    s{!!!next-input-character;}{q{    s{!!!next-input-character;}{q{
7        if (@{$self->{char}}) {        if (@{$self->{char}}) {
8          $self->{next_input_character} = shift @{$self->{char}};          $self->{next_input_character} = shift @{$self->{char}};
# Line 24  while (<>) { Line 13  while (<>) {
13    s{!!!back-next-input-character\b}{q{unshift @{$self->{char}}, }}ge;    s{!!!back-next-input-character\b}{q{unshift @{$self->{char}}, }}ge;
14    s{!!!parse-error;}{q{$self->{parse_error}->();}}ge;    s{!!!parse-error;}{q{$self->{parse_error}->();}}ge;
15    s{!!!parse-error\b}{q{$self->{parse_error}->}}ge;    s{!!!parse-error\b}{q{$self->{parse_error}->}}ge;
16      s{!!!insert-element-t\s*\(([^(),]+),([^(),]+)\)\s*;}{qq{
17        {
18          my \$el;
19          !!!create-element (\$el, $1, $2);
20          \$insert->(\$el);
21          push \@\$open_elements, [\$el, $1];
22        }
23      }}ge;
24      s{!!!insert-element-t\s*\(([^(),]+)\)\s*;}{qq{
25        {
26          my \$el;
27          !!!create-element (\$el, $1);
28          \$insert->(\$el);
29          push \@\$open_elements, [\$el, $1];
30        }
31      }}ge;
32      s{!!!insert-element\s*\(([^(),]+),([^(),]+)\)\s*;}{qq{
33        {
34          my \$el;
35          !!!create-element (\$el, $1, $2);
36          \$open_elements->[-1]->[0]->append_child (\$el);
37          push \@\$open_elements, [\$el, $1];
38        }
39      }}ge;
40      s{!!!insert-element\s*\(([^(),]+)\)\s*;}{qq{
41        {
42          my \$el;
43          !!!create-element (\$el, $1);
44          \$open_elements->[-1]->[0]->append_child (\$el);
45          push \@\$open_elements, [\$el, $1];
46        }
47      }}ge;
48      s{!!!create-element\s*\(([^(),]+),([^(),]+)(?:,([^(),]+))?\)\s*;}{
49        my $r = qq{
50          $1 = \$self->{document}->create_element_ns
51            (q<http://www.w3.org/1999/xhtml>, [undef, $2]);
52        };
53        if (defined $3) {
54          $r .= qq{
55            for my \$attr_name (keys %{$3}) {
56              $1->set_attribute_ns (undef, [undef, \$attr_name],
57                                    $3 ->{\$attr_name}->{value});
58            }
59          };
60        }
61        $r;
62      }ge; # MUST
63      s{!!!next-token;}{q{$token = $self->_get_next_token;}}ge;
64      s{!!!back-token;}{q{unshift @{$self->{token}}, $token;}}ge;
65      s{!!!back-token\s*\(}{q{unshift @{$self->{token}}, (}}ge;
66    print;    print;
67  }  }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.3

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24