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

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

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

revision 1.144 by wakaba, Mon Oct 6 07:54:18 2008 UTC revision 1.145 by wakaba, Mon Oct 6 09:18:07 2008 UTC
# Line 2674  $Element->{$HTML_NS}->{pre} = { Line 2674  $Element->{$HTML_NS}->{pre} = {
2674      my ($self, $item, $element_state) = @_;      my ($self, $item, $element_state) = @_;
2675        
2676      ## TODO: Flag to enable/disable IDL checking?      ## TODO: Flag to enable/disable IDL checking?
2677      my $class = $item->{node}->get_attribute ('class');      my $class = $item->{node}->get_attribute_ns (undef, 'class');
2678      if ($class =~ /\bidl(?>-code)?\b/) { ## TODO: use classList.has      if ($class =~ /\bidl(?>-code)?\b/) { ## TODO: use classList.has
2679        ## NOTE: pre.idl: WHATWG, XHR, Selectors API, CSSOM specs        ## NOTE: pre.idl: WHATWG, XHR, Selectors API, CSSOM specs
2680        ## NOTE: pre.code > code.idl-code: WebIDL spec        ## NOTE: pre.code > code.idl-code: WebIDL spec
# Line 4546  $Element->{$HTML_NS}->{map} = { Line 4546  $Element->{$HTML_NS}->{map} = {
4546      })->(@_);      })->(@_);
4547    
4548      if ($has_name) {      if ($has_name) {
4549        my $id = $item->{node}->get_attribute ('id');        my $id = $item->{node}->get_attribute_ns (undef, 'id');
4550        if (defined $id and $has_name->[0] ne $id) {        if (defined $id and $has_name->[0] ne $id) {
4551          $self->{onerror}->(node => $item->{node}->get_attribute_node ('id'),          $self->{onerror}->(node => $item->{node}->get_attribute_node ('id'),
4552                             type => 'id ne name',                             type => 'id ne name',
# Line 5422  $Element->{$HTML_NS}->{input} = { Line 5422  $Element->{$HTML_NS}->{input} = {
5422    check_attrs => sub {    check_attrs => sub {
5423      my ($self, $item, $element_state) = @_;      my ($self, $item, $element_state) = @_;
5424                    
5425      my $state = $item->{node}->get_attribute ('type');      my $state = $item->{node}->get_attribute_ns (undef, 'type');
5426      $state = 'text' unless defined $state;      $state = 'text' unless defined $state;
5427      $state =~ tr/A-Z/a-z/; ## ASCII case-insensitive      $state =~ tr/A-Z/a-z/; ## ASCII case-insensitive
5428    
# Line 5533  $Element->{$HTML_NS}->{input} = { Line 5533  $Element->{$HTML_NS}->{input} = {
5533              {              {
5534               value => sub {               value => sub {
5535                 my ($self, $attr, $item, $element_state) = @_;                 my ($self, $attr, $item, $element_state) = @_;
5536                 my $name = $item->{node}->get_attribute ('name');                 my $name = $item->{node}->get_attribute_ns (undef, 'name');
5537                 if (defined $name and $name eq '_charset_') { ## case-sensitive                 if (defined $name and $name eq '_charset_') { ## case-sensitive
5538                   $self->{onerror}->(node => $attr,                   $self->{onerror}->(node => $attr,
5539                                      type => '_charset_ value',                                      type => '_charset_ value',
# Line 5546  $Element->{$HTML_NS}->{input} = { Line 5546  $Element->{$HTML_NS}->{input} = {
5546            } elsif ($state eq 'password') {            } elsif ($state eq 'password') {
5547              $checker =              $checker =
5548              {              {
5549               ## TODO: autocomplete               autocomplete => $GetHTMLEnumeratedAttrChecker->({
5550                   on => 1, off => 1,
5551                 }),
5552               ## TODO: maxlength               ## TODO: maxlength
5553               ## TODO: pattern               ## TODO: pattern
5554               ## TODO: readonly               readonly => $GetHTMLBooleanAttrChecker->('readonly'),
5555               ## TODO: required               ## TODO: required
5556               ## TODO: size               size => $GetHTMLNonNegativeIntegerAttrChecker->(sub { 1 }),
5557               value => sub {               value => sub {
5558                 ## NOTE: No restriction.                 ## NOTE: No restriction.
5559                 ## TODO: Warn if it contains CR or LF?                 ## TODO: Warn if it contains CR or LF?
# Line 5560  $Element->{$HTML_NS}->{input} = { Line 5562  $Element->{$HTML_NS}->{input} = {
5562            } elsif ($state eq 'datetime') {            } elsif ($state eq 'datetime') {
5563              $checker =              $checker =
5564              {              {
5565               ## TODO: autocomplete               autocomplete => $GetHTMLEnumeratedAttrChecker->({
5566                   on => 1, off => 1,
5567                 }),
5568               ## TODO: list               ## TODO: list
5569               ## TODO: max               ## TODO: max
5570               ## TODO: min               ## TODO: min
5571               ## TODO: readonly               readonly => $GetHTMLBooleanAttrChecker->('readonly'),
5572               ## TODO: required               ## TODO: required
5573               ## TODO: step               ## TODO: step
5574               value => sub {               value => sub {
# Line 5575  $Element->{$HTML_NS}->{input} = { Line 5579  $Element->{$HTML_NS}->{input} = {
5579            } elsif ($state eq 'date') {            } elsif ($state eq 'date') {
5580              $checker =              $checker =
5581              {              {
5582               ## TODO: autocomplete               autocomplete => $GetHTMLEnumeratedAttrChecker->({
5583                   on => 1, off => 1,
5584                 }),
5585               ## TODO: list               ## TODO: list
5586               ## TODO: max               ## TODO: max
5587               ## TODO: min               ## TODO: min
5588               ## TODO: readonly               readonly => $GetHTMLBooleanAttrChecker->('readonly'),
5589               ## TODO: required               ## TODO: required
5590               ## TODO: step               ## TODO: step
5591               value => sub {               value => sub {
# Line 5590  $Element->{$HTML_NS}->{input} = { Line 5596  $Element->{$HTML_NS}->{input} = {
5596            } elsif ($state eq 'month') {            } elsif ($state eq 'month') {
5597              $checker =              $checker =
5598              {              {
5599               ## TODO: autocomplete               autocomplete => $GetHTMLEnumeratedAttrChecker->({
5600                   on => 1, off => 1,
5601                 }),
5602               ## TODO: list               ## TODO: list
5603               ## TODO: max               ## TODO: max
5604               ## TODO: min               ## TODO: min
5605               ## TODO: readonly               readonly => $GetHTMLBooleanAttrChecker->('readonly'),
5606               ## TODO: required               ## TODO: required
5607               ## TODO: step               ## TODO: step
5608               value => sub {               value => sub {
# Line 5605  $Element->{$HTML_NS}->{input} = { Line 5613  $Element->{$HTML_NS}->{input} = {
5613            } elsif ($state eq 'week') {            } elsif ($state eq 'week') {
5614              $checker =              $checker =
5615              {              {
5616               ## TODO: autocomplete               autocomplete => $GetHTMLEnumeratedAttrChecker->({
5617                   on => 1, off => 1,
5618                 }),
5619               ## TODO: list               ## TODO: list
5620               ## TODO: max               ## TODO: max
5621               ## TODO: min               ## TODO: min
5622               ## TODO: readonly               readonly => $GetHTMLBooleanAttrChecker->('readonly'),
5623               ## TODO: required               ## TODO: required
5624               ## TODO: step               ## TODO: step
5625               value => sub {               value => sub {
# Line 5620  $Element->{$HTML_NS}->{input} = { Line 5630  $Element->{$HTML_NS}->{input} = {
5630            } elsif ($state eq 'time') {            } elsif ($state eq 'time') {
5631              $checker =              $checker =
5632              {              {
5633               ## TODO: autocomplete               autocomplete => $GetHTMLEnumeratedAttrChecker->({
5634                   on => 1, off => 1,
5635                 }),
5636               ## TODO: list               ## TODO: list
5637               ## TODO: max               ## TODO: max
5638               ## TODO: min               ## TODO: min
5639               ## TODO: readonly               readonly => $GetHTMLBooleanAttrChecker->('readonly'),
5640               ## TODO: required               ## TODO: required
5641               ## TODO: step               ## TODO: step
5642               value => sub {               value => sub {
# Line 5635  $Element->{$HTML_NS}->{input} = { Line 5647  $Element->{$HTML_NS}->{input} = {
5647            } elsif ($state eq 'datetime-local') {            } elsif ($state eq 'datetime-local') {
5648              $checker =              $checker =
5649              {              {
5650               ## TODO: autocomplete               autocomplete => $GetHTMLEnumeratedAttrChecker->({
5651                   on => 1, off => 1,
5652                 }),
5653               ## TODO: list               ## TODO: list
5654               ## TODO: max               ## TODO: max
5655               ## TODO: min               ## TODO: min
5656               ## TODO: readonly               readonly => $GetHTMLBooleanAttrChecker->('readonly'),
5657               ## TODO: required               ## TODO: required
5658               ## TODO: step               ## TODO: step
5659               value => sub {               value => sub {
# Line 5650  $Element->{$HTML_NS}->{input} = { Line 5664  $Element->{$HTML_NS}->{input} = {
5664            } elsif ($state eq 'number') {            } elsif ($state eq 'number') {
5665              $checker =              $checker =
5666              {              {
5667               ## TODO: autocomplete               autocomplete => $GetHTMLEnumeratedAttrChecker->({
5668                   on => 1, off => 1,
5669                 }),
5670               ## TODO: list               ## TODO: list
5671               max => $GetHTMLFloatingPointNumberAttrChecker->(sub { 1 }),               max => $GetHTMLFloatingPointNumberAttrChecker->(sub { 1 }),
5672               min => $GetHTMLFloatingPointNumberAttrChecker->(sub { 1 }),               min => $GetHTMLFloatingPointNumberAttrChecker->(sub { 1 }),
5673                 ## TODO: min & max tests                 ## TODO: min & max tests
5674               ## TODO: readonly               readonly => $GetHTMLBooleanAttrChecker->('readonly'),
5675               ## TODO: required               ## TODO: required
5676               ## TODO: step               ## TODO: step
5677               value => sub {               value => sub {
# Line 5666  $Element->{$HTML_NS}->{input} = { Line 5682  $Element->{$HTML_NS}->{input} = {
5682            } elsif ($state eq 'range') {            } elsif ($state eq 'range') {
5683              $checker =              $checker =
5684              {              {
5685               ## TODO: autocomplete               autocomplete => $GetHTMLEnumeratedAttrChecker->({
5686                   on => 1, off => 1,
5687                 }),
5688               ## TODO: list               ## TODO: list
5689               max => $GetHTMLFloatingPointNumberAttrChecker->(sub { 1 }),               max => $GetHTMLFloatingPointNumberAttrChecker->(sub { 1 }),
5690               min => $GetHTMLFloatingPointNumberAttrChecker->(sub { 1 }),               min => $GetHTMLFloatingPointNumberAttrChecker->(sub { 1 }),
# Line 5751  $Element->{$HTML_NS}->{input} = { Line 5769  $Element->{$HTML_NS}->{input} = {
5769               align => $GetHTMLEnumeratedAttrChecker->({               align => $GetHTMLEnumeratedAttrChecker->({
5770                 top => 1, middle => 1, bottom => 1, left => 1, right => 1,                 top => 1, middle => 1, bottom => 1, left => 1, right => 1,
5771               }),               }),
              ## NOTE: HTML4 has a "should" for accessibility, which  
              ## cannot be tested here.  
              autocomplete => $GetHTMLEnumeratedAttrChecker->({on => 1, off => 1}),  
5772               checked => $GetHTMLBooleanAttrChecker->('checked'),               checked => $GetHTMLBooleanAttrChecker->('checked'),
5773               enctype => $HTMLIMTAttrChecker,               enctype => $HTMLIMTAttrChecker,
5774               ## TODO: inputmode [WF2]               ## TODO: inputmode [WF2]
5775               ismap => $GetHTMLBooleanAttrChecker->('ismap'),               ismap => $GetHTMLBooleanAttrChecker->('ismap'),
              ## TODO: list [WF2]  
              ## TODO: max [WF2]  
5776               maxlength => $GetHTMLNonNegativeIntegerAttrChecker->(sub { 1 }),               maxlength => $GetHTMLNonNegativeIntegerAttrChecker->(sub { 1 }),
5777               method => $GetHTMLEnumeratedAttrChecker->({               method => $GetHTMLEnumeratedAttrChecker->({
5778                 get => 1, post => 1, put => 1, delete => 1,                 get => 1, post => 1, put => 1, delete => 1,
5779               }),               }),
              ## TODO: min [WF2]  
5780               onformchange => $HTMLEventHandlerAttrChecker,               onformchange => $HTMLEventHandlerAttrChecker,
5781               onforminput => $HTMLEventHandlerAttrChecker,               onforminput => $HTMLEventHandlerAttrChecker,
5782               oninput => $HTMLEventHandlerAttrChecker,               oninput => $HTMLEventHandlerAttrChecker,
5783               oninvalid => $HTMLEventHandlerAttrChecker,               oninvalid => $HTMLEventHandlerAttrChecker,
              ## TODO: pattern  
              readonly => $GetHTMLBooleanAttrChecker->('readonly'),  
5784               replace => $GetHTMLEnumeratedAttrChecker->({document => 1, values => 1}),               replace => $GetHTMLEnumeratedAttrChecker->({document => 1, values => 1}),
5785               required => $GetHTMLBooleanAttrChecker->('required'),               required => $GetHTMLBooleanAttrChecker->('required'),
              size => $GetHTMLNonNegativeIntegerAttrChecker->(sub { 1 }),  
              ## TODO: step [WF2]  
5786               target => $HTMLTargetAttrChecker,               target => $HTMLTargetAttrChecker,
5787               usemap => $HTMLUsemapAttrChecker,               usemap => $HTMLUsemapAttrChecker,
              value => sub {}, ## NOTE: CDATA [M12N] ## TODO: "optional  
                               ## except when the type attribute has  
                               ## the value "radio" or "checkbox""  
                               ## [HTML4] TODO: constraints [WF2] TODO:  
                               ## "authors should ensure that in each  
                               ## set of radio buttons that one is  
                               ## initially "on"."  [HTML4] [WF2]  
5788    
5789               ## TODO: autocomplete  
5790                 autocomplete => $GetHTMLEnumeratedAttrChecker->({
5791                   on => 1, off => 1,
5792                 }),
5793               ## TODO: list               ## TODO: list
5794               ## TODO: maxlength               ## TODO: maxlength
5795               ## TODO: pattern               ## TODO: pattern
5796               ## TODO: readonly               readonly => $GetHTMLBooleanAttrChecker->('readonly'),
5797               ## TODO: required               ## TODO: required
5798               ## TODO: size               size => $GetHTMLNonNegativeIntegerAttrChecker->(sub { 1 }),
5799               value => sub {               value => sub {
5800                 ## NOTE: No restriction.                 ## NOTE: No restriction.
5801                 ## TODO: Warn if it contains CR or LF?                 ## TODO: Warn if it contains CR or LF?

Legend:
Removed from v.1.144  
changed lines
  Added in v.1.145

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24