/[suikacvs]/markup/html/whatpm/Whatpm/HTML.pm.src
Suika

Diff of /markup/html/whatpm/Whatpm/HTML.pm.src

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

revision 1.55 by wakaba, Sat Aug 11 06:53:38 2007 UTC revision 1.56 by wakaba, Sat Aug 11 07:19:18 2007 UTC
# Line 169  sub CHARACTER_TOKEN () { 6 } Line 169  sub CHARACTER_TOKEN () { 6 }
169  sub AFTER_HTML_IMS () { 0b100 }  sub AFTER_HTML_IMS () { 0b100 }
170  sub HEAD_IMS ()       { 0b1000 }  sub HEAD_IMS ()       { 0b1000 }
171  sub BODY_IMS ()       { 0b10000 }  sub BODY_IMS ()       { 0b10000 }
172  sub BODY_TABLE_IMS () { 0b100000 | BODY_IMS }  sub BODY_TABLE_IMS () { 0b100000 }
173  sub TABLE_IMS ()      { 0b1000000 }  sub TABLE_IMS ()      { 0b1000000 }
174  sub ROW_IMS ()        { 0b10000000 | TABLE_IMS }  sub ROW_IMS ()        { 0b10000000 }
175  sub BODY_AFTER_IMS () { 0b100000000 }  sub BODY_AFTER_IMS () { 0b100000000 }
176  sub FRAME_IMS ()      { 0b1000000000 }  sub FRAME_IMS ()      { 0b1000000000 }
177    
# Line 182  sub IN_HEAD_NOSCRIPT_IM () { HEAD_IMS | Line 182  sub IN_HEAD_NOSCRIPT_IM () { HEAD_IMS |
182  sub AFTER_HEAD_IM () { HEAD_IMS | 0b10 }  sub AFTER_HEAD_IM () { HEAD_IMS | 0b10 }
183  sub BEFORE_HEAD_IM () { HEAD_IMS | 0b11 }  sub BEFORE_HEAD_IM () { HEAD_IMS | 0b11 }
184  sub IN_BODY_IM () { BODY_IMS }  sub IN_BODY_IM () { BODY_IMS }
185  sub IN_CELL_IM () { BODY_TABLE_IMS | 0b01 }  sub IN_CELL_IM () { BODY_IMS | BODY_TABLE_IMS | 0b01 }
186  sub IN_CAPTION_IM () { BODY_TABLE_IMS | 0b10 }  sub IN_CAPTION_IM () { BODY_IMS | BODY_TABLE_IMS | 0b10 }
187  sub IN_ROW_IM () { ROW_IMS | 0b01 }  sub IN_ROW_IM () { TABLE_IMS | ROW_IMS | 0b01 }
188  sub IN_TABLE_BODY_IM () { ROW_IMS | 0b10 }  sub IN_TABLE_BODY_IM () { TABLE_IMS | ROW_IMS | 0b10 }
189  sub IN_TABLE_IM () { TABLE_IMS }  sub IN_TABLE_IM () { TABLE_IMS }
190  sub AFTER_BODY_IM () { BODY_AFTER_IMS }  sub AFTER_BODY_IM () { BODY_AFTER_IMS }
191  sub IN_FRAMESET_IM () { FRAME_IMS | 0b01 }  sub IN_FRAMESET_IM () { FRAME_IMS | 0b01 }
# Line 2539  sub _tree_construction_main ($) { Line 2539  sub _tree_construction_main ($) {
2539        !!!next-token;        !!!next-token;
2540        redo B;        redo B;
2541      } elsif ($token->{type} == END_OF_FILE_TOKEN) {      } elsif ($token->{type} == END_OF_FILE_TOKEN) {
2542        if ($self->{insertion_mode} == AFTER_HTML_BODY_IM or        if ($self->{insertion_mode} & AFTER_HTML_IMS) {
           $self->{insertion_mode} == AFTER_HTML_FRAMESET_IM) {  
2543          #          #
2544        } else {        } else {
2545          ## Generate implied end tags          ## Generate implied end tags
# Line 2596  sub _tree_construction_main ($) { Line 2595  sub _tree_construction_main ($) {
2595        redo B;        redo B;
2596      } elsif ($token->{type} == COMMENT_TOKEN) {      } elsif ($token->{type} == COMMENT_TOKEN) {
2597        my $comment = $self->{document}->create_comment ($token->{data});        my $comment = $self->{document}->create_comment ($token->{data});
2598        if ($self->{insertion_mode} == AFTER_HTML_BODY_IM or        if ($self->{insertion_mode} & AFTER_HTML_IMS) {
           $self->{insertion_mode} == AFTER_HTML_FRAMESET_IM) {  
2599          $self->{document}->append_child ($comment);          $self->{document}->append_child ($comment);
2600        } elsif ($self->{insertion_mode} == AFTER_BODY_IM) {        } elsif ($self->{insertion_mode} == AFTER_BODY_IM) {
2601          $self->{open_elements}->[0]->[0]->append_child ($comment);          $self->{open_elements}->[0]->[0]->append_child ($comment);
# Line 2606  sub _tree_construction_main ($) { Line 2604  sub _tree_construction_main ($) {
2604        }        }
2605        !!!next-token;        !!!next-token;
2606        redo B;        redo B;
2607      } elsif ($self->{insertion_mode} == IN_HEAD_IM or      } elsif ($self->{insertion_mode} & HEAD_IMS) {
              $self->{insertion_mode} == IN_HEAD_NOSCRIPT_IM or  
              $self->{insertion_mode} == AFTER_HEAD_IM or  
              $self->{insertion_mode} == BEFORE_HEAD_IM) {  
2608        if ($token->{type} == CHARACTER_TOKEN) {        if ($token->{type} == CHARACTER_TOKEN) {
2609          if ($token->{data} =~ s/^([\x09\x0A\x0B\x0C\x20]+)//) {          if ($token->{data} =~ s/^([\x09\x0A\x0B\x0C\x20]+)//) {
2610            $self->{open_elements}->[-1]->[0]->manakai_append_text ($1);            $self->{open_elements}->[-1]->[0]->manakai_append_text ($1);
# Line 2986  sub _tree_construction_main ($) { Line 2981  sub _tree_construction_main ($) {
2981            }            }
2982    
2983            ## ISSUE: An issue in the spec.            ## ISSUE: An issue in the spec.
2984      } elsif ($self->{insertion_mode} == IN_BODY_IM or      } elsif ($self->{insertion_mode} & BODY_IMS) {
              $self->{insertion_mode} == IN_CELL_IM or  
              $self->{insertion_mode} == IN_CAPTION_IM) {  
2985            if ($token->{type} == CHARACTER_TOKEN) {            if ($token->{type} == CHARACTER_TOKEN) {
2986              ## NOTE: There is a code clone of "character in body".              ## NOTE: There is a code clone of "character in body".
2987              $reconstruct_active_formatting_elements->($insert_to_current);              $reconstruct_active_formatting_elements->($insert_to_current);
# Line 3282  sub _tree_construction_main ($) { Line 3275  sub _tree_construction_main ($) {
3275              } elsif ({              } elsif ({
3276                        body => 1, col => 1, colgroup => 1, html => 1,                        body => 1, col => 1, colgroup => 1, html => 1,
3277                       }->{$token->{tag_name}}) {                       }->{$token->{tag_name}}) {
3278                if ($self->{insertion_mode} == IN_CELL_IM or                if ($self->{insertion_mode} & BODY_TABLE_IMS) {
                   $self->{insertion_mode} == IN_CAPTION_IM) {  
3279                  !!!parse-error (type => 'unmatched end tag:'.$token->{tag_name});                  !!!parse-error (type => 'unmatched end tag:'.$token->{tag_name});
3280                  ## Ignore the token                  ## Ignore the token
3281                  !!!next-token;                  !!!next-token;
# Line 3309  sub _tree_construction_main ($) { Line 3301  sub _tree_construction_main ($) {
3301    
3302        $insert = $insert_to_current;        $insert = $insert_to_current;
3303        #        #
3304      } elsif ($self->{insertion_mode} == IN_ROW_IM or      } elsif ($self->{insertion_mode} & TABLE_IMS) {
              $self->{insertion_mode} == IN_TABLE_BODY_IM or  
              $self->{insertion_mode} == IN_TABLE_IM) {  
3305            if ($token->{type} == CHARACTER_TOKEN) {            if ($token->{type} == CHARACTER_TOKEN) {
3306              ## NOTE: There are "character in table" code clones.              ## NOTE: There are "character in table" code clones.
3307              if ($token->{data} =~ s/^([\x09\x0A\x0B\x0C\x20]+)//) {              if ($token->{data} =~ s/^([\x09\x0A\x0B\x0C\x20]+)//) {
# Line 3766  sub _tree_construction_main ($) { Line 3756  sub _tree_construction_main ($) {
3756              } elsif ({              } elsif ({
3757                        tbody => 1, tfoot => 1, thead => 1,                        tbody => 1, tfoot => 1, thead => 1,
3758                       }->{$token->{tag_name}} and                       }->{$token->{tag_name}} and
3759                       ($self->{insertion_mode} == IN_ROW_IM or                       $self->{insertion_mode} & ROW_IMS) {
                       $self->{insertion_mode} == IN_TABLE_BODY_IM)) {  
3760                if ($self->{insertion_mode} == IN_ROW_IM) {                if ($self->{insertion_mode} == IN_ROW_IM) {
3761                  ## have an element in table scope                  ## have an element in table scope
3762                  my $i;                  my $i;
# Line 4107  sub _tree_construction_main ($) { Line 4096  sub _tree_construction_main ($) {
4096            ## Ignore the token            ## Ignore the token
4097            !!!next-token;            !!!next-token;
4098            redo B;            redo B;
4099      } elsif ($self->{insertion_mode} == AFTER_BODY_IM or      } elsif ($self->{insertion_mode} & BODY_AFTER_IMS) {
              $self->{insertion_mode} == AFTER_HTML_BODY_IM) {  
4100        if ($token->{type} == CHARACTER_TOKEN) {        if ($token->{type} == CHARACTER_TOKEN) {
4101          if ($token->{data} =~ s/^([\x09\x0A\x0B\x0C\x20]+)//) {          if ($token->{data} =~ s/^([\x09\x0A\x0B\x0C\x20]+)//) {
4102            my $data = $1;            my $data = $1;
# Line 4178  sub _tree_construction_main ($) { Line 4166  sub _tree_construction_main ($) {
4166        } else {        } else {
4167          die "$0: $token->{type}: Unknown token type";          die "$0: $token->{type}: Unknown token type";
4168        }        }
4169      } elsif ($self->{insertion_mode} == IN_FRAMESET_IM or      } elsif ($self->{insertion_mode} & FRAME_IMS) {
              $self->{insertion_mode} == AFTER_FRAMESET_IM or  
              $self->{insertion_mode} == AFTER_HTML_FRAMESET_IM) {  
4170        if ($token->{type} == CHARACTER_TOKEN) {        if ($token->{type} == CHARACTER_TOKEN) {
4171          if ($token->{data} =~ s/^([\x09\x0A\x0B\x0C\x20]+)//) {          if ($token->{data} =~ s/^([\x09\x0A\x0B\x0C\x20]+)//) {
4172            $self->{open_elements}->[-1]->[0]->manakai_append_text ($1);            $self->{open_elements}->[-1]->[0]->manakai_append_text ($1);

Legend:
Removed from v.1.55  
changed lines
  Added in v.1.56

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24