| 3267 |
# |
# |
| 3268 |
} else { |
} else { |
| 3269 |
## Generate implied end tags |
## Generate implied end tags |
| 3270 |
if ({ |
while ({ |
| 3271 |
dd => 1, dt => 1, li => 1, p => 1, td => 1, th => 1, tr => 1, |
dd => 1, dt => 1, li => 1, p => 1, |
| 3272 |
tbody => 1, tfoot=> 1, thead => 1, |
}->{$self->{open_elements}->[-1]->[1]}) { |
|
}->{$self->{open_elements}->[-1]->[1]}) { |
|
| 3273 |
!!!cp ('t75'); |
!!!cp ('t75'); |
| 3274 |
!!!back-token; |
pop @{$self->{open_elements}}; |
|
$token = {type => END_TAG_TOKEN, tag_name => $self->{open_elements}->[-1]->[1]}; |
|
|
redo B; |
|
| 3275 |
} |
} |
| 3276 |
|
|
| 3277 |
if (@{$self->{open_elements}} > 2 or |
if (@{$self->{open_elements}} > 2 or |
| 3883 |
} |
} |
| 3884 |
|
|
| 3885 |
## generate implied end tags |
## generate implied end tags |
| 3886 |
if ({ |
while ({ |
| 3887 |
dd => 1, dt => 1, li => 1, p => 1, |
dd => 1, dt => 1, li => 1, p => 1, |
| 3888 |
|
}->{$self->{open_elements}->[-1]->[1]}) { |
|
## NOTE: Maybe the following elements never appear here. |
|
|
td => 1, th => 1, tr => 1, |
|
|
tbody => 1, tfoot => 1, thead => 1, |
|
|
}->{$self->{open_elements}->[-1]->[1]}) { |
|
| 3889 |
!!!cp ('t158'); |
!!!cp ('t158'); |
| 3890 |
!!!back-token; # <?> |
pop @{$self->{open_elements}}; |
|
$token = {type => END_TAG_TOKEN, tag_name => 'caption'}; |
|
|
!!!back-token; |
|
|
$token = {type => END_TAG_TOKEN, |
|
|
tag_name => $self->{open_elements}->[-1]->[1]}; # MUST |
|
|
redo B; |
|
| 3891 |
} |
} |
| 3892 |
|
|
| 3893 |
if ($self->{open_elements}->[-1]->[1] ne 'caption') { |
if ($self->{open_elements}->[-1]->[1] ne 'caption') { |
| 3940 |
} |
} |
| 3941 |
|
|
| 3942 |
## generate implied end tags |
## generate implied end tags |
| 3943 |
if ({ |
while ({ |
| 3944 |
dd => 1, dt => 1, li => 1, p => 1, |
dd => 1, dt => 1, li => 1, p => 1, |
| 3945 |
td => ($token->{tag_name} eq 'th'), |
}->{$self->{open_elements}->[-1]->[1]}) { |
|
th => ($token->{tag_name} eq 'td'), |
|
|
|
|
|
## NOTE: Maybe the following elements never appear here. |
|
|
tr => 1, |
|
|
tbody => 1, tfoot => 1, thead => 1, |
|
|
}->{$self->{open_elements}->[-1]->[1]}) { |
|
| 3946 |
!!!cp ('t166'); |
!!!cp ('t166'); |
| 3947 |
!!!back-token; |
pop @{$self->{open_elements}}; |
|
$token = {type => END_TAG_TOKEN, |
|
|
tag_name => $self->{open_elements}->[-1]->[1]}; # MUST |
|
|
redo B; |
|
| 3948 |
} |
} |
| 3949 |
|
|
| 3950 |
if ($self->{open_elements}->[-1]->[1] ne $token->{tag_name}) { |
if ($self->{open_elements}->[-1]->[1] ne $token->{tag_name}) { |
| 3951 |
!!!cp ('t167'); |
!!!cp ('t167'); |
| 3952 |
!!!parse-error (type => 'not closed:'.$self->{open_elements}->[-1]->[1]); |
!!!parse-error (type => 'not closed:'.$self->{open_elements}->[-1]->[1]); |
| 3998 |
} |
} |
| 3999 |
|
|
| 4000 |
## generate implied end tags |
## generate implied end tags |
| 4001 |
if ({ |
while ({ |
| 4002 |
dd => 1, dt => 1, li => 1, p => 1, |
dd => 1, dt => 1, li => 1, p => 1, |
| 4003 |
|
}->{$self->{open_elements}->[-1]->[1]}) { |
|
## NOTE: The following elements never appear here, maybe. |
|
|
td => 1, th => 1, tr => 1, |
|
|
tbody => 1, tfoot => 1, thead => 1, |
|
|
}->{$self->{open_elements}->[-1]->[1]}) { |
|
| 4004 |
!!!cp ('t174'); |
!!!cp ('t174'); |
| 4005 |
!!!back-token; |
pop @{$self->{open_elements}}; |
|
$token = {type => END_TAG_TOKEN, |
|
|
tag_name => $self->{open_elements}->[-1]->[1]}; # MUST |
|
|
redo B; |
|
| 4006 |
} |
} |
| 4007 |
|
|
| 4008 |
if ($self->{open_elements}->[-1]->[1] ne 'caption') { |
if ($self->{open_elements}->[-1]->[1] ne 'caption') { |
| 4099 |
} |
} |
| 4100 |
|
|
| 4101 |
## generate implied end tags |
## generate implied end tags |
| 4102 |
if ({ |
while ({ |
| 4103 |
dd => 1, dt => 1, li => 1, p => 1, |
dd => 1, dt => 1, li => 1, p => 1, |
| 4104 |
|
}->{$self->{open_elements}->[-1]->[1]}) { |
|
## NOTE: The following elements never appear, maybe. |
|
|
td => 1, th => 1, tr => 1, |
|
|
tbody => 1, tfoot => 1, thead => 1, |
|
|
}->{$self->{open_elements}->[-1]->[1]}) { |
|
| 4105 |
!!!cp ('t187'); |
!!!cp ('t187'); |
| 4106 |
!!!back-token; # </table> |
pop @{$self->{open_elements}}; |
|
$token = {type => END_TAG_TOKEN, tag_name => 'caption'}; |
|
|
!!!back-token; |
|
|
$token = {type => END_TAG_TOKEN, |
|
|
tag_name => $self->{open_elements}->[-1]->[1]}; # MUST |
|
|
redo B; |
|
| 4107 |
} |
} |
| 4108 |
|
|
| 4109 |
if ($self->{open_elements}->[-1]->[1] ne 'caption') { |
if ($self->{open_elements}->[-1]->[1] ne 'caption') { |
| 4467 |
} |
} |
| 4468 |
|
|
| 4469 |
## generate implied end tags |
## generate implied end tags |
| 4470 |
if ({ |
while ({ |
| 4471 |
dd => 1, dt => 1, li => 1, p => 1, |
dd => 1, dt => 1, li => 1, p => 1, |
| 4472 |
td => 1, th => 1, tr => 1, |
}->{$self->{open_elements}->[-1]->[1]}) { |
|
tbody => 1, tfoot=> 1, thead => 1, |
|
|
}->{$self->{open_elements}->[-1]->[1]}) { |
|
| 4473 |
!!!cp ('t224'); |
!!!cp ('t224'); |
| 4474 |
!!!back-token; # <table> |
pop @{$self->{open_elements}}; |
|
$token = {type => END_TAG_TOKEN, tag_name => 'table'}; |
|
|
!!!back-token; |
|
|
$token = {type => END_TAG_TOKEN, |
|
|
tag_name => $self->{open_elements}->[-1]->[1]}; # MUST |
|
|
redo B; |
|
| 4475 |
} |
} |
| 4476 |
|
|
| 4477 |
if ($self->{open_elements}->[-1]->[1] ne 'table') { |
if ($self->{open_elements}->[-1]->[1] ne 'table') { |
| 4650 |
} |
} |
| 4651 |
|
|
| 4652 |
## generate implied end tags |
## generate implied end tags |
| 4653 |
if ({ |
while ({ |
| 4654 |
dd => 1, dt => 1, li => 1, p => 1, |
dd => 1, dt => 1, li => 1, p => 1, |
| 4655 |
td => 1, th => 1, tr => 1, |
}->{$self->{open_elements}->[-1]->[1]}) { |
|
tbody => 1, tfoot=> 1, thead => 1, |
|
|
}->{$self->{open_elements}->[-1]->[1]}) { |
|
| 4656 |
!!!cp ('t244'); |
!!!cp ('t244'); |
| 4657 |
## ISSUE: Can this case be reached? |
## ISSUE: Can this case be reached? |
| 4658 |
!!!back-token; |
pop @{$self->{open_elements}}; |
|
$token = {type => END_TAG_TOKEN, |
|
|
tag_name => $self->{open_elements}->[-1]->[1]}; # MUST |
|
|
redo B; |
|
| 4659 |
} |
} |
| 4660 |
|
|
| 4661 |
if ($self->{open_elements}->[-1]->[1] ne 'table') { |
if ($self->{open_elements}->[-1]->[1] ne 'table') { |
| 5405 |
redo B; |
redo B; |
| 5406 |
} elsif ({ |
} elsif ({ |
| 5407 |
address => 1, blockquote => 1, center => 1, dir => 1, |
address => 1, blockquote => 1, center => 1, dir => 1, |
| 5408 |
div => 1, dl => 1, fieldset => 1, listing => 1, |
div => 1, dl => 1, fieldset => 1, |
| 5409 |
menu => 1, ol => 1, p => 1, ul => 1, |
h1 => 1, h2 => 1, h3 => 1, h4 => 1, h5 => 1, h6 => 1, |
| 5410 |
|
listing => 1, menu => 1, ol => 1, p => 1, ul => 1, |
| 5411 |
pre => 1, |
pre => 1, |
| 5412 |
}->{$token->{tag_name}}) { |
}->{$token->{tag_name}}) { |
| 5413 |
## has a p element in scope |
## has a p element in scope |
| 5609 |
|
|
| 5610 |
!!!next-token; |
!!!next-token; |
| 5611 |
redo B; |
redo B; |
|
} elsif ({ |
|
|
h1 => 1, h2 => 1, h3 => 1, h4 => 1, h5 => 1, h6 => 1, |
|
|
}->{$token->{tag_name}}) { |
|
|
## has a p element in scope |
|
|
INSCOPE: for (reverse 0..$#{$self->{open_elements}}) { |
|
|
my $node = $self->{open_elements}->[$_]; |
|
|
if ($node->[1] eq 'p') { |
|
|
!!!cp ('t369'); |
|
|
!!!back-token; |
|
|
$token = {type => END_TAG_TOKEN, tag_name => 'p'}; |
|
|
redo B; |
|
|
} elsif ({ |
|
|
table => 1, caption => 1, td => 1, th => 1, |
|
|
button => 1, marquee => 1, object => 1, html => 1, |
|
|
}->{$node->[1]}) { |
|
|
!!!cp ('t370'); |
|
|
last INSCOPE; |
|
|
} |
|
|
} # INSCOPE |
|
|
|
|
|
## NOTE: See <http://html5.org/tools/web-apps-tracker?from=925&to=926> |
|
|
## has an element in scope |
|
|
#my $i; |
|
|
#INSCOPE: for (reverse 0..$#{$self->{open_elements}}) { |
|
|
# my $node = $self->{open_elements}->[$_]; |
|
|
# if ({ |
|
|
# h1 => 1, h2 => 1, h3 => 1, h4 => 1, h5 => 1, h6 => 1, |
|
|
# }->{$node->[1]}) { |
|
|
# $i = $_; |
|
|
# last INSCOPE; |
|
|
# } elsif ({ |
|
|
# table => 1, caption => 1, td => 1, th => 1, |
|
|
# button => 1, marquee => 1, object => 1, html => 1, |
|
|
# }->{$node->[1]}) { |
|
|
# last INSCOPE; |
|
|
# } |
|
|
#} # INSCOPE |
|
|
# |
|
|
#if (defined $i) { |
|
|
# !!! parse-error (type => 'in hn:hn'); |
|
|
# splice @{$self->{open_elements}}, $i; |
|
|
#} |
|
|
|
|
|
!!!insert-element-t ($token->{tag_name}, $token->{attributes}); |
|
|
|
|
|
!!!next-token; |
|
|
redo B; |
|
| 5612 |
} elsif ($token->{tag_name} eq 'a') { |
} elsif ($token->{tag_name} eq 'a') { |
| 5613 |
AFE: for my $i (reverse 0..$#$active_formatting_elements) { |
AFE: for my $i (reverse 0..$#$active_formatting_elements) { |
| 5614 |
my $node = $active_formatting_elements->[$i]; |
my $node = $active_formatting_elements->[$i]; |
| 5709 |
$reconstruct_active_formatting_elements->($insert_to_current); |
$reconstruct_active_formatting_elements->($insert_to_current); |
| 5710 |
|
|
| 5711 |
!!!insert-element-t ($token->{tag_name}, $token->{attributes}); |
!!!insert-element-t ($token->{tag_name}, $token->{attributes}); |
| 5712 |
|
|
| 5713 |
|
## TODO: associate with $self->{form_element} if defined |
| 5714 |
|
|
| 5715 |
push @$active_formatting_elements, ['#marker', '']; |
push @$active_formatting_elements, ['#marker', '']; |
| 5716 |
|
|
| 5717 |
!!!next-token; |
!!!next-token; |
| 5911 |
$reconstruct_active_formatting_elements->($insert_to_current); |
$reconstruct_active_formatting_elements->($insert_to_current); |
| 5912 |
|
|
| 5913 |
!!!insert-element-t ($token->{tag_name}, $token->{attributes}); |
!!!insert-element-t ($token->{tag_name}, $token->{attributes}); |
| 5914 |
|
|
| 5915 |
|
## TODO: associate with $self->{form_element} if defined |
| 5916 |
|
|
| 5917 |
$self->{insertion_mode} = IN_SELECT_IM; |
$self->{insertion_mode} = IN_SELECT_IM; |
| 5918 |
!!!next-token; |
!!!next-token; |
| 5989 |
address => 1, blockquote => 1, center => 1, dir => 1, |
address => 1, blockquote => 1, center => 1, dir => 1, |
| 5990 |
div => 1, dl => 1, fieldset => 1, listing => 1, |
div => 1, dl => 1, fieldset => 1, listing => 1, |
| 5991 |
menu => 1, ol => 1, pre => 1, ul => 1, |
menu => 1, ol => 1, pre => 1, ul => 1, |
|
p => 1, |
|
| 5992 |
dd => 1, dt => 1, li => 1, |
dd => 1, dt => 1, li => 1, |
| 5993 |
button => 1, marquee => 1, object => 1, |
button => 1, marquee => 1, object => 1, |
| 5994 |
}->{$token->{tag_name}}) { |
}->{$token->{tag_name}}) { |
| 5997 |
INSCOPE: for (reverse 0..$#{$self->{open_elements}}) { |
INSCOPE: for (reverse 0..$#{$self->{open_elements}}) { |
| 5998 |
my $node = $self->{open_elements}->[$_]; |
my $node = $self->{open_elements}->[$_]; |
| 5999 |
if ($node->[1] eq $token->{tag_name}) { |
if ($node->[1] eq $token->{tag_name}) { |
|
## generate implied end tags |
|
|
if ({ |
|
|
dd => ($token->{tag_name} ne 'dd'), |
|
|
dt => ($token->{tag_name} ne 'dt'), |
|
|
li => ($token->{tag_name} ne 'li'), |
|
|
p => ($token->{tag_name} ne 'p'), |
|
|
td => 1, th => 1, tr => 1, |
|
|
tbody => 1, tfoot=> 1, thead => 1, |
|
|
}->{$self->{open_elements}->[-1]->[1]}) { |
|
|
!!!cp ('t409'); |
|
|
!!!back-token; |
|
|
$token = {type => END_TAG_TOKEN, |
|
|
tag_name => $self->{open_elements}->[-1]->[1]}; # MUST |
|
|
redo B; |
|
|
} |
|
|
|
|
| 6000 |
!!!cp ('t410'); |
!!!cp ('t410'); |
| 6001 |
$i = $_; |
$i = $_; |
| 6002 |
last INSCOPE unless $token->{tag_name} eq 'p'; |
last INSCOPE; |
| 6003 |
} elsif ({ |
} elsif ({ |
| 6004 |
table => 1, caption => 1, td => 1, th => 1, |
table => 1, caption => 1, td => 1, th => 1, |
| 6005 |
button => 1, marquee => 1, object => 1, html => 1, |
button => 1, marquee => 1, object => 1, html => 1, |
| 6008 |
last INSCOPE; |
last INSCOPE; |
| 6009 |
} |
} |
| 6010 |
} # INSCOPE |
} # INSCOPE |
| 6011 |
|
|
| 6012 |
if ($self->{open_elements}->[-1]->[1] ne $token->{tag_name}) { |
unless (defined $i) { # has an element in scope |
| 6013 |
if (defined $i) { |
!!!cp ('t413'); |
| 6014 |
|
!!!parse-error (type => 'unmatched end tag:'.$token->{tag_name}); |
| 6015 |
|
} else { |
| 6016 |
|
## Step 1. generate implied end tags |
| 6017 |
|
while ({ |
| 6018 |
|
dd => ($token->{tag_name} ne 'dd'), |
| 6019 |
|
dt => ($token->{tag_name} ne 'dt'), |
| 6020 |
|
li => ($token->{tag_name} ne 'li'), |
| 6021 |
|
p => 1, |
| 6022 |
|
}->{$self->{open_elements}->[-1]->[1]}) { |
| 6023 |
|
!!!cp ('t409'); |
| 6024 |
|
pop @{$self->{open_elements}}; |
| 6025 |
|
} |
| 6026 |
|
|
| 6027 |
|
## Step 2. |
| 6028 |
|
if ($self->{open_elements}->[-1]->[1] ne $token->{tag_name}) { |
| 6029 |
!!!cp ('t412'); |
!!!cp ('t412'); |
| 6030 |
!!!parse-error (type => 'not closed:'.$self->{open_elements}->[-1]->[1]); |
!!!parse-error (type => 'not closed:'.$self->{open_elements}->[-1]->[1]); |
| 6031 |
} else { |
} else { |
| 6032 |
!!!cp ('t413'); |
!!!cp ('t414'); |
|
!!!parse-error (type => 'unmatched end tag:'.$token->{tag_name}); |
|
| 6033 |
} |
} |
| 6034 |
} |
|
| 6035 |
|
## Step 3. |
|
if (defined $i) { |
|
|
!!!cp ('t414'); |
|
| 6036 |
splice @{$self->{open_elements}}, $i; |
splice @{$self->{open_elements}}, $i; |
| 6037 |
} elsif ($token->{tag_name} eq 'p') { |
|
| 6038 |
!!!cp ('t415'); |
## Step 4. |
| 6039 |
## As if <p>, then reprocess the current token |
$clear_up_to_marker->() |
| 6040 |
my $el; |
if { |
| 6041 |
!!!create-element ($el, 'p'); |
button => 1, marquee => 1, object => 1, |
| 6042 |
$insert->($el); |
}->{$token->{tag_name}}; |
|
} else { |
|
|
!!!cp ('t416'); |
|
| 6043 |
} |
} |
|
$clear_up_to_marker->() |
|
|
if { |
|
|
button => 1, marquee => 1, object => 1, |
|
|
}->{$token->{tag_name}}; |
|
| 6044 |
!!!next-token; |
!!!next-token; |
| 6045 |
redo B; |
redo B; |
| 6046 |
} elsif ($token->{tag_name} eq 'form') { |
} elsif ($token->{tag_name} eq 'form') { |
| 6049 |
my $node = $self->{open_elements}->[$_]; |
my $node = $self->{open_elements}->[$_]; |
| 6050 |
if ($node->[1] eq $token->{tag_name}) { |
if ($node->[1] eq $token->{tag_name}) { |
| 6051 |
## generate implied end tags |
## generate implied end tags |
| 6052 |
if ({ |
while ({ |
| 6053 |
dd => 1, dt => 1, li => 1, p => 1, |
dd => 1, dt => 1, li => 1, p => 1, |
| 6054 |
|
}->{$self->{open_elements}->[-1]->[1]}) { |
|
## NOTE: The following elements never appear here, maybe. |
|
|
td => 1, th => 1, tr => 1, |
|
|
tbody => 1, tfoot => 1, thead => 1, |
|
|
}->{$self->{open_elements}->[-1]->[1]}) { |
|
| 6055 |
!!!cp ('t417'); |
!!!cp ('t417'); |
| 6056 |
!!!back-token; |
pop @{$self->{open_elements}}; |
|
$token = {type => END_TAG_TOKEN, |
|
|
tag_name => $self->{open_elements}->[-1]->[1]}; # MUST |
|
|
redo B; |
|
| 6057 |
} |
} |
| 6058 |
|
|
| 6059 |
!!!cp ('t418'); |
!!!cp ('t418'); |
| 6060 |
last INSCOPE; |
last INSCOPE; |
| 6061 |
} elsif ({ |
} elsif ({ |
| 6089 |
h1 => 1, h2 => 1, h3 => 1, h4 => 1, h5 => 1, h6 => 1, |
h1 => 1, h2 => 1, h3 => 1, h4 => 1, h5 => 1, h6 => 1, |
| 6090 |
}->{$node->[1]}) { |
}->{$node->[1]}) { |
| 6091 |
## generate implied end tags |
## generate implied end tags |
| 6092 |
if ({ |
while ({ |
| 6093 |
dd => 1, dt => 1, li => 1, p => 1, |
dd => 1, dt => 1, li => 1, p => 1, |
| 6094 |
td => 1, th => 1, tr => 1, |
}->{$self->{open_elements}->[-1]->[1]}) { |
|
tbody => 1, tfoot=> 1, thead => 1, |
|
|
}->{$self->{open_elements}->[-1]->[1]}) { |
|
| 6095 |
!!!cp ('t422'); |
!!!cp ('t422'); |
| 6096 |
!!!back-token; |
pop @{$self->{open_elements}}; |
|
$token = {type => END_TAG_TOKEN, |
|
|
tag_name => $self->{open_elements}->[-1]->[1]}; # MUST |
|
|
redo B; |
|
| 6097 |
} |
} |
| 6098 |
|
|
| 6099 |
!!!cp ('t423'); |
!!!cp ('t423'); |
| 6118 |
splice @{$self->{open_elements}}, $i if defined $i; |
splice @{$self->{open_elements}}, $i if defined $i; |
| 6119 |
!!!next-token; |
!!!next-token; |
| 6120 |
redo B; |
redo B; |
| 6121 |
|
} elsif ($token->{tag_name} eq 'p') { |
| 6122 |
|
## has an element in scope |
| 6123 |
|
my $i; |
| 6124 |
|
INSCOPE: for (reverse 0..$#{$self->{open_elements}}) { |
| 6125 |
|
my $node = $self->{open_elements}->[$_]; |
| 6126 |
|
if ($node->[1] eq $token->{tag_name}) { |
| 6127 |
|
!!!cp ('t410.1'); |
| 6128 |
|
$i = $_; |
| 6129 |
|
last INSCOPE; |
| 6130 |
|
} elsif ({ |
| 6131 |
|
table => 1, caption => 1, td => 1, th => 1, |
| 6132 |
|
button => 1, marquee => 1, object => 1, html => 1, |
| 6133 |
|
}->{$node->[1]}) { |
| 6134 |
|
!!!cp ('t411.1'); |
| 6135 |
|
last INSCOPE; |
| 6136 |
|
} |
| 6137 |
|
} # INSCOPE |
| 6138 |
|
|
| 6139 |
|
if (defined $i) { |
| 6140 |
|
if ($self->{open_elements}->[-1]->[1] ne $token->{tag_name}) { |
| 6141 |
|
!!!cp ('t412.1'); |
| 6142 |
|
!!!parse-error (type => 'not closed:'.$self->{open_elements}->[-1]->[1]); |
| 6143 |
|
} else { |
| 6144 |
|
!!!cp ('t414.1'); |
| 6145 |
|
} |
| 6146 |
|
|
| 6147 |
|
splice @{$self->{open_elements}}, $i; |
| 6148 |
|
} else { |
| 6149 |
|
!!!cp ('t413.1'); |
| 6150 |
|
!!!parse-error (type => 'unmatched end tag:'.$token->{tag_name}); |
| 6151 |
|
|
| 6152 |
|
!!!cp ('t415.1'); |
| 6153 |
|
## As if <p>, then reprocess the current token |
| 6154 |
|
my $el; |
| 6155 |
|
!!!create-element ($el, 'p'); |
| 6156 |
|
$insert->($el); |
| 6157 |
|
## NOTE: Not inserted into |$self->{open_elements}|. |
| 6158 |
|
} |
| 6159 |
|
|
| 6160 |
|
!!!next-token; |
| 6161 |
|
redo B; |
| 6162 |
} elsif ({ |
} elsif ({ |
| 6163 |
a => 1, |
a => 1, |
| 6164 |
b => 1, big => 1, em => 1, font => 1, i => 1, |
b => 1, big => 1, em => 1, font => 1, i => 1, |
| 6212 |
if ($node->[1] eq $token->{tag_name}) { |
if ($node->[1] eq $token->{tag_name}) { |
| 6213 |
## Step 1 |
## Step 1 |
| 6214 |
## generate implied end tags |
## generate implied end tags |
| 6215 |
if ({ |
while ({ |
| 6216 |
dd => 1, dt => 1, li => 1, p => 1, |
dd => 1, dt => 1, li => 1, p => 1, |
| 6217 |
td => 1, th => 1, tr => 1, |
}->{$self->{open_elements}->[-1]->[1]}) { |
|
tbody => 1, tfoot => 1, thead => 1, |
|
|
}->{$self->{open_elements}->[-1]->[1]}) { |
|
| 6218 |
!!!cp ('t430'); |
!!!cp ('t430'); |
| 6219 |
## ISSUE: Can this case be reached? |
## ISSUE: Can this case be reached? |
| 6220 |
!!!back-token; |
pop @{$self->{open_elements}}; |
|
$token = {type => END_TAG_TOKEN, |
|
|
tag_name => $self->{open_elements}->[-1]->[1]}; # MUST |
|
|
redo B; |
|
| 6221 |
} |
} |
| 6222 |
|
|
| 6223 |
## Step 2 |
## Step 2 |