/[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.33 by wakaba, Sat Jul 7 13:41:05 2007 UTC revision 1.34 by wakaba, Mon Jul 16 01:52:27 2007 UTC
# Line 2506  sub _tree_construction_main ($) { Line 2506  sub _tree_construction_main ($) {
2506          !!!next-token;          !!!next-token;
2507          ## TODO: Extracting |charset| from |meta|.          ## TODO: Extracting |charset| from |meta|.
2508          return;          return;
2509          } elsif ($token->{tag_name} eq 'meta') {
2510            ## NOTE: This is an "as if in head" code clone, only "-t" differs
2511            !!!insert-element-t ($token->{tag_name}, $token->{attributes});
2512            pop @{$self->{open_elements}}; ## ISSUE: This step is missing in the spec.
2513    
2514            unless ($self->{confident}) {
2515              my $charset;
2516              if ($token->{attributes}->{charset}) { ## TODO: And if supported
2517                $charset = $token->{attributes}->{charset}->{value};
2518              }
2519              if ($token->{attributes}->{'http-equiv'}) {
2520                if ($token->{attributes}->{'http-equiv'}->{value}
2521                    =~ /\A[^;]*;[\x09-\x0D\x20]*charset[\x09-\x0D\x20]*=
2522                        [\x09-\x0D\x20]*(?>"([^"]*)"|'([^']*)'|
2523                        ([^"'\x09-\x0D\x20][^\x09-\x0D\x20]*))/x) {
2524                  $charset = defined $1 ? $1 : defined $2 ? $2 : $3;
2525                } ## TODO: And if supported
2526              }
2527              ## TODO: Change the encoding
2528            }
2529    
2530            !!!next-token;
2531            ## TODO: Extracting |charset| from |meta|.
2532            return;
2533        } elsif ($token->{tag_name} eq 'title') {        } elsif ($token->{tag_name} eq 'title') {
2534          !!!parse-error (type => 'in body:title');          !!!parse-error (type => 'in body:title');
2535          ## NOTE: This is an "as if in head" code clone          ## NOTE: This is an "as if in head" code clone
# Line 3438  sub _tree_construction_main ($) { Line 3462  sub _tree_construction_main ($) {
3462            } elsif ($token->{type} eq 'start tag') {            } elsif ($token->{type} eq 'start tag') {
3463              if ({base => ($self->{insertion_mode} eq 'in head' or              if ({base => ($self->{insertion_mode} eq 'in head' or
3464                            $self->{insertion_mode} eq 'after head'),                            $self->{insertion_mode} eq 'after head'),
3465                   link => 1, meta => 1}->{$token->{tag_name}}) {                   link => 1}->{$token->{tag_name}}) {
3466                ## NOTE: There is a "as if in head" code clone.                ## NOTE: There is a "as if in head" code clone.
3467                if ($self->{insertion_mode} eq 'after head') {                if ($self->{insertion_mode} eq 'after head') {
3468                  !!!parse-error (type => 'after head:'.$token->{tag_name});                  !!!parse-error (type => 'after head:'.$token->{tag_name});
# Line 3449  sub _tree_construction_main ($) { Line 3473  sub _tree_construction_main ($) {
3473                ## TODO: Extracting |charset| from |meta|.                ## TODO: Extracting |charset| from |meta|.
3474                pop @{$self->{open_elements}}                pop @{$self->{open_elements}}
3475                    if $self->{insertion_mode} eq 'after head';                    if $self->{insertion_mode} eq 'after head';
3476                  !!!next-token;
3477                  redo B;
3478                } elsif ($token->{tag_name} eq 'meta') {
3479                  ## NOTE: There is a "as if in head" code clone.
3480                  if ($self->{insertion_mode} eq 'after head') {
3481                    !!!parse-error (type => 'after head:'.$token->{tag_name});
3482                    push @{$self->{open_elements}}, [$self->{head_element}, 'head'];
3483                  }
3484                  !!!insert-element ($token->{tag_name}, $token->{attributes});
3485                  pop @{$self->{open_elements}}; ## ISSUE: This step is missing in the spec.
3486    
3487                  unless ($self->{confident}) {
3488                    my $charset;
3489                    if ($token->{attributes}->{charset}) { ## TODO: And if supported
3490                      $charset = $token->{attributes}->{charset}->{value};
3491                    }
3492                    if ($token->{attributes}->{'http-equiv'}) {
3493                      if ($token->{attributes}->{'http-equiv'}->{value}
3494                          =~ /\A[^;]*;[\x09-\x0D\x20]*charset[\x09-\x0D\x20]*=
3495                              [\x09-\x0D\x20]*(?>"([^"]*)"|'([^']*)'|
3496                              ([^"'\x09-\x0D\x20][^\x09-\x0D\x20]*))/x) {
3497                        $charset = defined $1 ? $1 : defined $2 ? $2 : $3;
3498                      } ## TODO: And if supported
3499                    }
3500                    ## TODO: Change the encoding
3501                  }
3502    
3503                  ## TODO: Extracting |charset| from |meta|.
3504                  pop @{$self->{open_elements}}
3505                      if $self->{insertion_mode} eq 'after head';
3506                !!!next-token;                !!!next-token;
3507                redo B;                redo B;
3508              } elsif ($token->{tag_name} eq 'title' and              } elsif ($token->{tag_name} eq 'title' and

Legend:
Removed from v.1.33  
changed lines
  Added in v.1.34

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24