/[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.233 by wakaba, Sun Sep 6 01:45:58 2009 UTC revision 1.235 by wakaba, Sun Sep 6 08:02:54 2009 UTC
# Line 648  sub parse_char_stream ($$$;$$) { Line 648  sub parse_char_stream ($$$;$$) {
648    
649    ## NOTE: |set_inner_html| copies most of this method's code    ## NOTE: |set_inner_html| copies most of this method's code
650    
651      ## Confidence: irrelevant.
652    $self->{confident} = 1 unless exists $self->{confident};    $self->{confident} = 1 unless exists $self->{confident};
653    
654    $self->{document}->input_encoding ($self->{input_encoding})    $self->{document}->input_encoding ($self->{input_encoding})
655        if defined $self->{input_encoding};        if defined $self->{input_encoding};
656  ## TODO: |{input_encoding}| is needless?  ## TODO: |{input_encoding}| is needless?
# Line 1609  sub _tree_construction_main ($) { Line 1611  sub _tree_construction_main ($) {
1611                
1612        ## Step 8        ## Step 8
1613        if ($common_ancestor_node->[1] & TABLE_ROWS_EL) {        if ($common_ancestor_node->[1] & TABLE_ROWS_EL) {
1614            ## Foster parenting.
1615          my $foster_parent_element;          my $foster_parent_element;
1616          my $next_sibling;          my $next_sibling;
1617          OE: for (reverse 0..$#{$self->{open_elements}}) {          OE: for (reverse 0..$#{$self->{open_elements}}) {
1618            if ($self->{open_elements}->[$_]->[1] == TABLE_EL) {            if ($self->{open_elements}->[$_]->[1] == TABLE_EL) {
1619                               my $parent = $self->{open_elements}->[$_]->[0]->parent_node;              !!!cp ('t65.2');
1620                               if (defined $parent and $parent->node_type == 1) {              $foster_parent_element = $self->{open_elements}->[$_ - 1]->[0];
1621                                 !!!cp ('t65.1');              $next_sibling = $self->{open_elements}->[$_]->[0];
1622                                 $foster_parent_element = $parent;              undef $next_sibling
1623                                 $next_sibling = $self->{open_elements}->[$_]->[0];                  unless $next_sibling->parent_node eq $foster_parent_element;
1624                               } else {              last OE;
1625                                 !!!cp ('t65.2');            }
1626                                 $foster_parent_element          } # OE
1627                                   = $self->{open_elements}->[$_ - 1]->[0];          $foster_parent_element ||= $self->{open_elements}->[0]->[0];
1628                               }  
                              last OE;  
                            }  
                          } # OE  
                          $foster_parent_element = $self->{open_elements}->[0]->[0]  
                            unless defined $foster_parent_element;  
1629          $foster_parent_element->insert_before ($last_node->[0], $next_sibling);          $foster_parent_element->insert_before ($last_node->[0], $next_sibling);
1630          $open_tables->[-1]->[1] = 1; # tainted          $open_tables->[-1]->[1] = 1; # tainted
1631        } else {        } else {
# Line 1683  sub _tree_construction_main ($) { Line 1681  sub _tree_construction_main ($) {
1681      $self->{open_elements}->[-1]->[0]->append_child ($_[0]);      $self->{open_elements}->[-1]->[0]->append_child ($_[0]);
1682    }; # $insert_to_current    }; # $insert_to_current
1683    
1684      ## Foster parenting.  Note that there are three "foster parenting"
1685      ## code in the parser: for elements (this one), for texts, and for
1686      ## elements in the AAA code.
1687    my $insert_to_foster = sub {    my $insert_to_foster = sub {
1688      my $child = shift;      my $child = shift;
1689      if ($self->{open_elements}->[-1]->[1] & TABLE_ROWS_EL) {      if ($self->{open_elements}->[-1]->[1] & TABLE_ROWS_EL) {
# Line 1691  sub _tree_construction_main ($) { Line 1692  sub _tree_construction_main ($) {
1692        my $next_sibling;        my $next_sibling;
1693        OE: for (reverse 0..$#{$self->{open_elements}}) {        OE: for (reverse 0..$#{$self->{open_elements}}) {
1694          if ($self->{open_elements}->[$_]->[1] == TABLE_EL) {          if ($self->{open_elements}->[$_]->[1] == TABLE_EL) {
1695                               my $parent = $self->{open_elements}->[$_]->[0]->parent_node;            !!!cp ('t71');
1696                               if (defined $parent and $parent->node_type == 1) {            $foster_parent_element = $self->{open_elements}->[$_ - 1]->[0];
1697                                 !!!cp ('t70');            $next_sibling = $self->{open_elements}->[$_]->[0];
1698                                 $foster_parent_element = $parent;            undef $next_sibling
1699                                 $next_sibling = $self->{open_elements}->[$_]->[0];                unless $next_sibling->parent_node eq $foster_parent_element;
1700                               } else {            last OE;
1701                                 !!!cp ('t71');          }
1702                                 $foster_parent_element        } # OE
1703                                   = $self->{open_elements}->[$_ - 1]->[0];        $foster_parent_element ||= $self->{open_elements}->[0]->[0];
1704                               }  
1705                               last OE;        $foster_parent_element->insert_before ($child, $next_sibling);
                            }  
                          } # OE  
                          $foster_parent_element = $self->{open_elements}->[0]->[0]  
                            unless defined $foster_parent_element;  
                          $foster_parent_element->insert_before  
                            ($child, $next_sibling);  
1706        $open_tables->[-1]->[1] = 1; # tainted        $open_tables->[-1]->[1] = 1; # tainted
1707      } else {      } else {
1708        !!!cp ('t72');        !!!cp ('t72');
# Line 1768  sub _tree_construction_main ($) { Line 1763  sub _tree_construction_main ($) {
1763            }            }
1764          }          }
1765    
1766          ## Foster parenting          ## Foster parenting.
1767          !!!parse-error (type => 'in table:#text', token => $token);          !!!parse-error (type => 'in table:#text', token => $token);
1768    
1769          ## NOTE: As if in body, but insert into the foster parent element.          ## NOTE: As if in body, but insert into the foster parent element.
# Line 1778  sub _tree_construction_main ($) { Line 1773  sub _tree_construction_main ($) {
1773            # MUST            # MUST
1774            my $foster_parent_element;            my $foster_parent_element;
1775            my $next_sibling;            my $next_sibling;
           #my $prev_sibling;  
1776            OE: for (reverse 0..$#{$self->{open_elements}}) {            OE: for (reverse 0..$#{$self->{open_elements}}) {
1777              if ($self->{open_elements}->[$_]->[1] == TABLE_EL) {              if ($self->{open_elements}->[$_]->[1] == TABLE_EL) {
1778                my $parent = $self->{open_elements}->[$_]->[0]->parent_node;                !!!cp ('t197');
1779                if (defined $parent and $parent->node_type == 1) {                $foster_parent_element = $self->{open_elements}->[$_ - 1]->[0];
1780                  $foster_parent_element = $parent;                $next_sibling = $self->{open_elements}->[$_]->[0];
1781                  !!!cp ('t196');                undef $next_sibling
1782                  $next_sibling = $self->{open_elements}->[$_]->[0];                  unless $next_sibling->parent_node eq $foster_parent_element;
           #      $prev_sibling = $next_sibling->previous_sibling;  
                 #  
               } else {  
                 !!!cp ('t197');  
                 $foster_parent_element = $self->{open_elements}->[$_ - 1]->[0];  
           #      $prev_sibling = $foster_parent_element->last_child;  
                 #  
               }  
1783                last OE;                last OE;
1784              }              }
1785            } # OE            } # OE
1786            $foster_parent_element = $self->{open_elements}->[0]->[0] #and            $foster_parent_element ||= $self->{open_elements}->[0]->[0];
1787            #$prev_sibling = $foster_parent_element->last_child  
1788                unless defined $foster_parent_element;            !!!cp ('t199');
1789            #undef $prev_sibling unless $open_tables->[-1]->[2]; # ~node inserted            $foster_parent_element->insert_before
1790            #if (defined $prev_sibling and                ($self->{document}->create_text_node ($s), $next_sibling);
1791            #    $prev_sibling->node_type == 3) {  
           #  !!! cp ('t198');  
           #  $prev_sibling->manakai_append_text ($s);  
           #} else {  
             !!!cp ('t199');  
             $foster_parent_element->insert_before  
                 ($self->{document}->create_text_node ($s), $next_sibling);  
           #}  
1792            $open_tables->[-1]->[1] = 1; # tainted            $open_tables->[-1]->[1] = 1; # tainted
1793            $open_tables->[-1]->[2] = 1; # ~node inserted            $open_tables->[-1]->[2] = 1; # ~node inserted
1794          } else {          } else {
# Line 5513  sub set_inner_html ($$$$;$) { Line 5492  sub set_inner_html ($$$$;$) {
5492    my $onerror = $_[1];    my $onerror = $_[1];
5493    my $get_wrapper = $_[2] || sub ($) { return $_[0] };    my $get_wrapper = $_[2] || sub ($) { return $_[0] };
5494    
   ## ISSUE: Should {confident} be true?  
   
5495    my $nt = $node->node_type;    my $nt = $node->node_type;
5496    if ($nt == 9) { # Document (invoke the algorithm with no /context/ element)    if ($nt == 9) { # Document (invoke the algorithm with no /context/ element)
5497      # MUST      # MUST
# Line 5729  sub set_inner_html ($$$$;$) { Line 5706  sub set_inner_html ($$$$;$) {
5706        $anode = $anode->parent_node;        $anode = $anode->parent_node;
5707      } # AN      } # AN
5708    
5709        ## F.5. Set the input stream.
5710        $self->{confident} = 1; ## Confident: irrelevant.
5711    
5712      ## F.6. Start the parser.      ## F.6. Start the parser.
5713      {      {
5714        my $self = $p;        my $self = $p;

Legend:
Removed from v.1.233  
changed lines
  Added in v.1.235

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24