/[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.239 by wakaba, Sun Sep 6 10:17:38 2009 UTC
# Line 194  my $el_category = { Line 194  my $el_category = {
194    h6 => HEADING_EL,    h6 => HEADING_EL,
195    head => MISC_SPECIAL_EL,    head => MISC_SPECIAL_EL,
196    header => MISC_SPECIAL_EL,    header => MISC_SPECIAL_EL,
197      hgroup => MISC_SPECIAL_EL,
198    hr => MISC_SPECIAL_EL,    hr => MISC_SPECIAL_EL,
199    html => HTML_EL,    html => HTML_EL,
200    i => FORMATTING_EL,    i => FORMATTING_EL,
# Line 248  my $el_category = { Line 249  my $el_category = {
249    u => FORMATTING_EL,    u => FORMATTING_EL,
250    ul => MISC_SPECIAL_EL,    ul => MISC_SPECIAL_EL,
251    wbr => MISC_SPECIAL_EL,    wbr => MISC_SPECIAL_EL,
252      xmp => MISC_SPECIAL_EL,
253  };  };
254    
255  my $el_category_f = {  my $el_category_f = {
# Line 648  sub parse_char_stream ($$$;$$) { Line 650  sub parse_char_stream ($$$;$$) {
650    
651    ## NOTE: |set_inner_html| copies most of this method's code    ## NOTE: |set_inner_html| copies most of this method's code
652    
653      ## Confidence: irrelevant.
654    $self->{confident} = 1 unless exists $self->{confident};    $self->{confident} = 1 unless exists $self->{confident};
655    
656    $self->{document}->input_encoding ($self->{input_encoding})    $self->{document}->input_encoding ($self->{input_encoding})
657        if defined $self->{input_encoding};        if defined $self->{input_encoding};
658  ## TODO: |{input_encoding}| is needless?  ## TODO: |{input_encoding}| is needless?
# Line 1609  sub _tree_construction_main ($) { Line 1613  sub _tree_construction_main ($) {
1613                
1614        ## Step 8        ## Step 8
1615        if ($common_ancestor_node->[1] & TABLE_ROWS_EL) {        if ($common_ancestor_node->[1] & TABLE_ROWS_EL) {
1616            ## Foster parenting.
1617          my $foster_parent_element;          my $foster_parent_element;
1618          my $next_sibling;          my $next_sibling;
1619          OE: for (reverse 0..$#{$self->{open_elements}}) {          OE: for (reverse 0..$#{$self->{open_elements}}) {
1620            if ($self->{open_elements}->[$_]->[1] == TABLE_EL) {            if ($self->{open_elements}->[$_]->[1] == TABLE_EL) {
1621                               my $parent = $self->{open_elements}->[$_]->[0]->parent_node;              !!!cp ('t65.2');
1622                               if (defined $parent and $parent->node_type == 1) {              $foster_parent_element = $self->{open_elements}->[$_ - 1]->[0];
1623                                 !!!cp ('t65.1');              $next_sibling = $self->{open_elements}->[$_]->[0];
1624                                 $foster_parent_element = $parent;              undef $next_sibling
1625                                 $next_sibling = $self->{open_elements}->[$_]->[0];                  unless $next_sibling->parent_node eq $foster_parent_element;
1626                               } else {              last OE;
1627                                 !!!cp ('t65.2');            }
1628                                 $foster_parent_element          } # OE
1629                                   = $self->{open_elements}->[$_ - 1]->[0];          $foster_parent_element ||= $self->{open_elements}->[0]->[0];
1630                               }  
                              last OE;  
                            }  
                          } # OE  
                          $foster_parent_element = $self->{open_elements}->[0]->[0]  
                            unless defined $foster_parent_element;  
1631          $foster_parent_element->insert_before ($last_node->[0], $next_sibling);          $foster_parent_element->insert_before ($last_node->[0], $next_sibling);
1632          $open_tables->[-1]->[1] = 1; # tainted          $open_tables->[-1]->[1] = 1; # tainted
1633        } else {        } else {
# Line 1683  sub _tree_construction_main ($) { Line 1683  sub _tree_construction_main ($) {
1683      $self->{open_elements}->[-1]->[0]->append_child ($_[0]);      $self->{open_elements}->[-1]->[0]->append_child ($_[0]);
1684    }; # $insert_to_current    }; # $insert_to_current
1685    
1686      ## Foster parenting.  Note that there are three "foster parenting"
1687      ## code in the parser: for elements (this one), for texts, and for
1688      ## elements in the AAA code.
1689    my $insert_to_foster = sub {    my $insert_to_foster = sub {
1690      my $child = shift;      my $child = shift;
1691      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 1694  sub _tree_construction_main ($) {
1694        my $next_sibling;        my $next_sibling;
1695        OE: for (reverse 0..$#{$self->{open_elements}}) {        OE: for (reverse 0..$#{$self->{open_elements}}) {
1696          if ($self->{open_elements}->[$_]->[1] == TABLE_EL) {          if ($self->{open_elements}->[$_]->[1] == TABLE_EL) {
1697                               my $parent = $self->{open_elements}->[$_]->[0]->parent_node;            !!!cp ('t71');
1698                               if (defined $parent and $parent->node_type == 1) {            $foster_parent_element = $self->{open_elements}->[$_ - 1]->[0];
1699                                 !!!cp ('t70');            $next_sibling = $self->{open_elements}->[$_]->[0];
1700                                 $foster_parent_element = $parent;            undef $next_sibling
1701                                 $next_sibling = $self->{open_elements}->[$_]->[0];                unless $next_sibling->parent_node eq $foster_parent_element;
1702                               } else {            last OE;
1703                                 !!!cp ('t71');          }
1704                                 $foster_parent_element        } # OE
1705                                   = $self->{open_elements}->[$_ - 1]->[0];        $foster_parent_element ||= $self->{open_elements}->[0]->[0];
1706                               }  
1707                               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);  
1708        $open_tables->[-1]->[1] = 1; # tainted        $open_tables->[-1]->[1] = 1; # tainted
1709      } else {      } else {
1710        !!!cp ('t72');        !!!cp ('t72');
# Line 1768  sub _tree_construction_main ($) { Line 1765  sub _tree_construction_main ($) {
1765            }            }
1766          }          }
1767    
1768          ## Foster parenting          ## Foster parenting.
1769          !!!parse-error (type => 'in table:#text', token => $token);          !!!parse-error (type => 'in table:#text', token => $token);
1770    
1771          ## 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 1775  sub _tree_construction_main ($) {
1775            # MUST            # MUST
1776            my $foster_parent_element;            my $foster_parent_element;
1777            my $next_sibling;            my $next_sibling;
           #my $prev_sibling;  
1778            OE: for (reverse 0..$#{$self->{open_elements}}) {            OE: for (reverse 0..$#{$self->{open_elements}}) {
1779              if ($self->{open_elements}->[$_]->[1] == TABLE_EL) {              if ($self->{open_elements}->[$_]->[1] == TABLE_EL) {
1780                my $parent = $self->{open_elements}->[$_]->[0]->parent_node;                !!!cp ('t197');
1781                if (defined $parent and $parent->node_type == 1) {                $foster_parent_element = $self->{open_elements}->[$_ - 1]->[0];
1782                  $foster_parent_element = $parent;                $next_sibling = $self->{open_elements}->[$_]->[0];
1783                  !!!cp ('t196');                undef $next_sibling
1784                  $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;  
                 #  
               }  
1785                last OE;                last OE;
1786              }              }
1787            } # OE            } # OE
1788            $foster_parent_element = $self->{open_elements}->[0]->[0] #and            $foster_parent_element ||= $self->{open_elements}->[0]->[0];
1789            #$prev_sibling = $foster_parent_element->last_child  
1790                unless defined $foster_parent_element;            !!!cp ('t199');
1791            #undef $prev_sibling unless $open_tables->[-1]->[2]; # ~node inserted            $foster_parent_element->insert_before
1792            #if (defined $prev_sibling and                ($self->{document}->create_text_node ($s), $next_sibling);
1793            #    $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);  
           #}  
1794            $open_tables->[-1]->[1] = 1; # tainted            $open_tables->[-1]->[1] = 1; # tainted
1795            $open_tables->[-1]->[2] = 1; # ~node inserted            $open_tables->[-1]->[2] = 1; # ~node inserted
1796          } else {          } else {
# Line 2508  sub _tree_construction_main ($) { Line 2489  sub _tree_construction_main ($) {
2489              ## reprocess              ## reprocess
2490              !!!ack-later;              !!!ack-later;
2491              next B;              next B;
2492            } elsif ($token->{type} == END_TAG_TOKEN) {        } elsif ($token->{type} == END_TAG_TOKEN) {
2493              if ($token->{tag_name} eq 'head') {          ## "Before head", "in head", and "after head" insertion modes
2494                if ($self->{insertion_mode} == BEFORE_HEAD_IM) {          ## ignore most of end tags.  Exceptions are "body", "html",
2495                  !!!cp ('t132');          ## and "br" end tags.  "Before head" and "in head" insertion
2496                  ## As if <head>          ## modes also recognize "head" end tag.  "In head noscript"
2497                  !!!create-element ($self->{head_element}, $HTML_NS, 'head',, $token);          ## insertion modes ignore end tags except for "noscript" and
2498                  $self->{open_elements}->[-1]->[0]->append_child ($self->{head_element});          ## "br".
                 push @{$self->{open_elements}},  
                     [$self->{head_element}, $el_category->{head}];  
2499    
2500                  ## Reprocess in the "in head" insertion mode...          if ($token->{tag_name} eq 'head') {
2501                  pop @{$self->{open_elements}};            if ($self->{insertion_mode} == BEFORE_HEAD_IM) {
2502                  $self->{insertion_mode} = AFTER_HEAD_IM;              !!!cp ('t132');
2503                  !!!next-token;              ## As if <head>
2504                  next B;              !!!create-element ($self->{head_element}, $HTML_NS, 'head',, $token);
2505                } elsif ($self->{insertion_mode} == IN_HEAD_NOSCRIPT_IM) {              $self->{open_elements}->[-1]->[0]->append_child ($self->{head_element});
2506                  !!!cp ('t133');              push @{$self->{open_elements}},
2507                  ## As if </noscript>                  [$self->{head_element}, $el_category->{head}];
2508                  pop @{$self->{open_elements}};  
2509                  !!!parse-error (type => 'in noscript:/',              ## Reprocess in the "in head" insertion mode...
2510                                  text => 'head', token => $token);              pop @{$self->{open_elements}};
2511                                $self->{insertion_mode} = AFTER_HEAD_IM;
2512                  ## Reprocess in the "in head" insertion mode...              !!!next-token;
2513                  pop @{$self->{open_elements}};              next B;
2514                  $self->{insertion_mode} = AFTER_HEAD_IM;            } elsif ($self->{insertion_mode} == IN_HEAD_NOSCRIPT_IM) {
2515                  !!!next-token;              !!!cp ('t133');
2516                  next B;              #
2517                } elsif ($self->{insertion_mode} == IN_HEAD_IM) {            } elsif ($self->{insertion_mode} == IN_HEAD_IM) {
2518                  !!!cp ('t134');              !!!cp ('t134');
2519                  pop @{$self->{open_elements}};              pop @{$self->{open_elements}};
2520                  $self->{insertion_mode} = AFTER_HEAD_IM;              $self->{insertion_mode} = AFTER_HEAD_IM;
2521                  !!!next-token;              !!!next-token;
2522                  next B;              next B;
2523                } elsif ($self->{insertion_mode} == AFTER_HEAD_IM) {            } elsif ($self->{insertion_mode} == AFTER_HEAD_IM) {
2524                  !!!cp ('t134.1');              !!!cp ('t134.1');
2525                  !!!parse-error (type => 'unmatched end tag', text => 'head',              #
2526                                  token => $token);            } else {
2527                  ## Ignore the token              die "$0: $self->{insertion_mode}: Unknown insertion mode";
2528                  !!!next-token;            }
2529                  next B;          } elsif ($token->{tag_name} eq 'noscript') {
2530                } else {            if ($self->{insertion_mode} == IN_HEAD_NOSCRIPT_IM) {
2531                  die "$0: $self->{insertion_mode}: Unknown insertion mode";              !!!cp ('t136');
2532                }              pop @{$self->{open_elements}};
2533              } elsif ($token->{tag_name} eq 'noscript') {              $self->{insertion_mode} = IN_HEAD_IM;
2534                if ($self->{insertion_mode} == IN_HEAD_NOSCRIPT_IM) {              !!!next-token;
2535                  !!!cp ('t136');              next B;
2536                  pop @{$self->{open_elements}};            } else {
2537                  $self->{insertion_mode} = IN_HEAD_IM;              !!!cp ('t138');
2538                  !!!next-token;              #
2539                  next B;            }
2540                } elsif ($self->{insertion_mode} == BEFORE_HEAD_IM or          } elsif ({
2541                         $self->{insertion_mode} == AFTER_HEAD_IM) {              body => ($self->{insertion_mode} != IN_HEAD_NOSCRIPT_IM),
2542                  !!!cp ('t137');              html => ($self->{insertion_mode} != IN_HEAD_NOSCRIPT_IM),
2543                  !!!parse-error (type => 'unmatched end tag',              br => 1,
2544                                  text => 'noscript', token => $token);          }->{$token->{tag_name}}) {
                 ## Ignore the token ## ISSUE: An issue in the spec.  
                 !!!next-token;  
                 next B;  
               } else {  
                 !!!cp ('t138');  
                 #  
               }  
             } elsif ({  
                       body => 1, html => 1,  
                      }->{$token->{tag_name}}) {  
               ## TODO: This branch is entirely redundant.  
               if ($self->{insertion_mode} == BEFORE_HEAD_IM or  
                   $self->{insertion_mode} == IN_HEAD_IM or  
                   $self->{insertion_mode} == IN_HEAD_NOSCRIPT_IM) {  
                 !!!cp ('t140');  
                 !!!parse-error (type => 'unmatched end tag',  
                                 text => $token->{tag_name}, token => $token);  
                 ## Ignore the token  
                 !!!next-token;  
                 next B;  
               } elsif ($self->{insertion_mode} == AFTER_HEAD_IM) {  
                 !!!cp ('t140.1');  
                 !!!parse-error (type => 'unmatched end tag',  
                                 text => $token->{tag_name}, token => $token);  
                 ## Ignore the token  
                 !!!next-token;  
                 next B;  
               } else {  
                 die "$0: $self->{insertion_mode}: Unknown insertion mode";  
               }  
             } elsif ($token->{tag_name} eq 'p') {  
               !!!cp ('t142');  
               !!!parse-error (type => 'unmatched end tag',  
                               text => $token->{tag_name}, token => $token);  
               ## Ignore the token  
               !!!next-token;  
               next B;  
         } elsif ($token->{tag_name} eq 'br') {  
2545            if ($self->{insertion_mode} == BEFORE_HEAD_IM) {            if ($self->{insertion_mode} == BEFORE_HEAD_IM) {
2546              !!!cp ('t142.2');              !!!cp ('t142.2');
2547              ## (before head) as if <head>, (in head) as if </head>              ## (before head) as if <head>, (in head) as if </head>
# Line 2620  sub _tree_construction_main ($) { Line 2561  sub _tree_construction_main ($) {
2561              !!!cp ('t143.3');              !!!cp ('t143.3');
2562              ## NOTE: Two parse errors for <head><noscript></br>              ## NOTE: Two parse errors for <head><noscript></br>
2563              !!!parse-error (type => 'unmatched end tag',              !!!parse-error (type => 'unmatched end tag',
2564                              text => 'br', token => $token);                              text => $token->{tag_name}, token => $token);
2565              ## As if </noscript>              ## As if </noscript>
2566              pop @{$self->{open_elements}};              pop @{$self->{open_elements}};
2567              $self->{insertion_mode} = IN_HEAD_IM;              $self->{insertion_mode} = IN_HEAD_IM;
# Line 2638  sub _tree_construction_main ($) { Line 2579  sub _tree_construction_main ($) {
2579              die "$0: $self->{insertion_mode}: Unknown insertion mode";              die "$0: $self->{insertion_mode}: Unknown insertion mode";
2580            }            }
2581    
2582            #            ## "after head" insertion mode
2583          } else { ## Other end tags            ## As if <body>
2584                !!!cp ('t145');            !!!insert-element ('body',, $token);
2585                !!!parse-error (type => 'unmatched end tag',            $self->{insertion_mode} = IN_BODY_IM;
2586                                text => $token->{tag_name}, token => $token);            ## Reprocess.
2587                ## Ignore the token            next B;
2588                !!!next-token;          }
               next B;  
             }  
   
             if ($self->{insertion_mode} == IN_HEAD_NOSCRIPT_IM) {  
               !!!cp ('t146');  
               ## As if </noscript>  
               pop @{$self->{open_elements}};  
               !!!parse-error (type => 'in noscript:/',  
                               text => $token->{tag_name}, token => $token);  
                 
               ## Reprocess in the "in head" insertion mode...  
               ## As if </head>  
               pop @{$self->{open_elements}};  
   
               ## Reprocess in the "after head" insertion mode...  
             } elsif ($self->{insertion_mode} == IN_HEAD_IM) {  
               !!!cp ('t147');  
               ## As if </head>  
               pop @{$self->{open_elements}};  
   
               ## Reprocess in the "after head" insertion mode...  
             } elsif ($self->{insertion_mode} == BEFORE_HEAD_IM) {  
 ## ISSUE: This case cannot be reached?  
               !!!cp ('t148');  
               !!!parse-error (type => 'unmatched end tag',  
                               text => $token->{tag_name}, token => $token);  
               ## Ignore the token ## ISSUE: An issue in the spec.  
               !!!next-token;  
               next B;  
             } else {  
               !!!cp ('t149');  
             }  
2589    
2590              ## "after head" insertion mode          ## End tags are ignored by default.
2591              ## As if <body>          !!!cp ('t145');
2592              !!!insert-element ('body',, $token);          !!!parse-error (type => 'unmatched end tag',
2593              $self->{insertion_mode} = IN_BODY_IM;                          text => $token->{tag_name}, token => $token);
2594              ## reprocess          ## Ignore the token.
2595            !!!next-token;
2596          next B;          next B;
2597        } elsif ($token->{type} == END_OF_FILE_TOKEN) {        } elsif ($token->{type} == END_OF_FILE_TOKEN) {
2598          if ($self->{insertion_mode} == BEFORE_HEAD_IM) {          if ($self->{insertion_mode} == BEFORE_HEAD_IM) {
# Line 4435  sub _tree_construction_main ($) { Line 4345  sub _tree_construction_main ($) {
4345                  center => 1, datagrid => 1, details => 1, dialog => 1,                  center => 1, datagrid => 1, details => 1, dialog => 1,
4346                  dir => 1, div => 1, dl => 1, fieldset => 1, figure => 1,                  dir => 1, div => 1, dl => 1, fieldset => 1, figure => 1,
4347                  footer => 1, h1 => 1, h2 => 1, h3 => 1, h4 => 1, h5 => 1,                  footer => 1, h1 => 1, h2 => 1, h3 => 1, h4 => 1, h5 => 1,
4348                  h6 => 1, header => 1, menu => 1, nav => 1, ol => 1, p => 1,                  h6 => 1, header => 1, hgroup => 1,
4349                    menu => 1, nav => 1, ol => 1, p => 1,
4350                  section => 1, ul => 1,                  section => 1, ul => 1,
4351                  ## NOTE: As normal, but drops leading newline                  ## NOTE: As normal, but drops leading newline
4352                  pre => 1, listing => 1,                  pre => 1, listing => 1,
# Line 5075  sub _tree_construction_main ($) { Line 4986  sub _tree_construction_main ($) {
4986          next B;          next B;
4987        }        }
4988      } elsif ($token->{type} == END_TAG_TOKEN) {      } elsif ($token->{type} == END_TAG_TOKEN) {
4989        if ($token->{tag_name} eq 'body') {        if ($token->{tag_name} eq 'body' or $token->{tag_name} eq 'html') {
4990    
4991          ## 1. If not "have an element in scope":          ## 1. If not "have an element in scope":
4992          ## "has a |body| element in scope"          ## "has a |body| element in scope"
# Line 5092  sub _tree_construction_main ($) { Line 5003  sub _tree_construction_main ($) {
5003              }              }
5004            }            }
5005    
5006            ## NOTE: |<marquee></body>|, |<svg><foreignobject></body>|            ## NOTE: |<marquee></body>|, |<svg><foreignobject></body>|,
5007              ## and fragment cases.
5008    
5009            !!!parse-error (type => 'unmatched end tag',            !!!parse-error (type => 'unmatched end tag',
5010                            text => $token->{tag_name}, token => $token);                            text => $token->{tag_name}, token => $token);
5011            ## NOTE: Ignore the token.            ## Ignore the token.  (</body> or </html>)
5012            !!!next-token;            !!!next-token;
5013            next B;            next B;
5014          } # INSCOPE          } # INSCOPE
# Line 5119  sub _tree_construction_main ($) { Line 5031  sub _tree_construction_main ($) {
5031    
5032          ## 3. Switch the insertion mode.          ## 3. Switch the insertion mode.
5033          $self->{insertion_mode} = AFTER_BODY_IM;          $self->{insertion_mode} = AFTER_BODY_IM;
5034          !!!next-token;          if ($token->{tag_name} eq 'body') {
         next B;  
       } elsif ($token->{tag_name} eq 'html') {  
         ## TODO: Update this code.  It seems that the code below is not  
         ## up-to-date, though it has same effect as speced.  
         if (@{$self->{open_elements}} > 1 and  
             $self->{open_elements}->[1]->[1] == BODY_EL) {  
           unless ($self->{open_elements}->[-1]->[1] == BODY_EL) {  
             !!!cp ('t406');  
             !!!parse-error (type => 'not closed',  
                             text => $self->{open_elements}->[1]->[0]  
                                 ->manakai_local_name,  
                             token => $token);  
           } else {  
             !!!cp ('t407');  
           }  
           $self->{insertion_mode} = AFTER_BODY_IM;  
           ## reprocess  
           next B;  
         } else {  
           !!!cp ('t408');  
           !!!parse-error (type => 'unmatched end tag',  
                           text => $token->{tag_name}, token => $token);  
           ## Ignore the token  
5035            !!!next-token;            !!!next-token;
5036            next B;          } else { # html
5037              ## Reprocess.
5038          }          }
5039            next B;
5040        } elsif ({        } elsif ({
5041                  ## NOTE: End tags for non-phrasing flow content elements                  ## NOTE: End tags for non-phrasing flow content elements
5042    
# Line 5153  sub _tree_construction_main ($) { Line 5044  sub _tree_construction_main ($) {
5044                  address => 1, article => 1, aside => 1, blockquote => 1,                  address => 1, article => 1, aside => 1, blockquote => 1,
5045                  center => 1, datagrid => 1, details => 1, dialog => 1,                  center => 1, datagrid => 1, details => 1, dialog => 1,
5046                  dir => 1, div => 1, dl => 1, fieldset => 1, figure => 1,                  dir => 1, div => 1, dl => 1, fieldset => 1, figure => 1,
5047                  footer => 1, header => 1, listing => 1, menu => 1, nav => 1,                  footer => 1, header => 1, hgroup => 1,
5048                    listing => 1, menu => 1, nav => 1,
5049                  ol => 1, pre => 1, section => 1, ul => 1,                  ol => 1, pre => 1, section => 1, ul => 1,
5050    
5051                  ## NOTE: As normal, but ... optional tags                  ## NOTE: As normal, but ... optional tags
# Line 5513  sub set_inner_html ($$$$;$) { Line 5405  sub set_inner_html ($$$$;$) {
5405    my $onerror = $_[1];    my $onerror = $_[1];
5406    my $get_wrapper = $_[2] || sub ($) { return $_[0] };    my $get_wrapper = $_[2] || sub ($) { return $_[0] };
5407    
   ## ISSUE: Should {confident} be true?  
   
5408    my $nt = $node->node_type;    my $nt = $node->node_type;
5409    if ($nt == 9) { # Document (invoke the algorithm with no /context/ element)    if ($nt == 9) { # Document (invoke the algorithm with no /context/ element)
5410      # MUST      # MUST
# Line 5729  sub set_inner_html ($$$$;$) { Line 5619  sub set_inner_html ($$$$;$) {
5619        $anode = $anode->parent_node;        $anode = $anode->parent_node;
5620      } # AN      } # AN
5621    
5622        ## F.5. Set the input stream.
5623        $p->{confident} = 1; ## Confident: irrelevant.
5624    
5625      ## F.6. Start the parser.      ## F.6. Start the parser.
5626      {      {
5627        my $self = $p;        my $self = $p;

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24