遅い→起動時

http://d.hatena.ne.jp/pmint/

はてなダイアリーにはコメントから始まるブログパーツを貼れないらしい

はてなアイデアから適当に選んで(idea:24593)のHTML::WidgetValidator::Widgetを作ってみた。
例1は通るのに、例2だと通らない。


HTML::WidgetValidator::WidgetContainerのmatchでは、どちらの例のいずれの比較対象でも正しく作られているのに。


HTML::WidgetValidatorのバグじゃないのかな。
はてなダイアリーに貼れるブログパーツで、コメントから始まってる例があったら見てみたい。


ちなみに「貼るだけ.NET」のこのブログパーツはaタグの属性に""が付いてなかったので、実際にはどう頑張ってもはてなでは貼れない。

実行用
use lib qw{HTML-WidgetValidator-Widget-Harudake_ga/lib};
use HTML::WidgetValidator;

my $validator = HTML::WidgetValidator->new(widgets => ['Harudake_ga']);

#例1
my $html = <<'_m-ga.html_';
<SCRIPT TYPE="text/javascript" SRC="http://www.harudake.net/ga/bin/ga.php?idname=1253867843g&pn=1&rdf=http://&scl=on"></SCRIPT><NOSCRIPT><div align="center" style="font-size:12px;">
<a href="http://www.harudake.net/">ブログパーツ</a><a href="http://www.moterubook.com/">もてる男の情報</a>
</div></NOSCRIPT>
<!-- http://www.harudake.net/ -->
_m-ga.html_

#例2
#my $html = <<'_m-ga.html_';
#<!--  貼 る だ け . N E T  -->
#<SCRIPT TYPE="text/javascript" SRC="http://www.harudake.net/ga/bin/ga.php?idname=1253867843g&pn=1&rdf=http://&scl=on"></SCRIPT><NOSCRIPT><div align="center" style="font-size:12px;">
#<a href="http://www.harudake.net/">ブログパーツ</a><a href="http://www.moterubook.com/">もてる男の情報</a>
#</div></NOSCRIPT>
#<!-- http://www.harudake.net/ -->
#_m-ga.html_

my $result  = $validator->validate($html);
if ($result){
    print $result->code, "\n";
}
print ".\n";

__END__
HTML::WidgetValidator::Widget::Harudake_ga
package HTML::WidgetValidator::Widget::Harudake_ga;
use base qw(HTML::WidgetValidator::Widget);
use strict;
use warnings;

our $VERSION = 0.01;

__PACKAGE__->name('Harudake_ga');
__PACKAGE__->url('http://www.harudake.net/');
__PACKAGE__->models([
    [
#例2ではコメント解除して
#       { type => 'text', text => '<!--  貼 る だ け . N E T  -->' },
        { type => 'start', name => 'script',
            attr => {
                type => 'text/javascript',
                src => qr{\Qhttp://www.harudake.net/ga/bin/ga.php?\Eidname=\w+&pn=\d&rdf=(.*?)&scl=(:?on|off|)},
            },
        },
        { type => 'end', name => 'script' },

        { type => 'start', name => 'noscript' },
            { type => 'start', name => 'div',
                attr => {
                    align => qr{.*},
                    style => qr{.*},
                },
            },
                { type => 'start', name => 'a',
                    attr => {
                        href => qr{\Qhttp://www.harudake.net/\E},
                    },
                },
                { type => 'text', text => 'ブログパーツ' },
                { type => 'end', name => 'a' },
                
                { type => 'start', name => 'a',
                    attr => {
                        href => qr{.*},
                    },
                },
                { type => 'text', text => 'もてる男の情報' },
                { type => 'end', name => 'a' },
                
            { type => 'end', name => 'div' },
        { type => 'end', name => 'noscript' },
        { type => 'text', text => '<!-- http://www.harudake.net/ -->' },
    ],
]);

1;
__END__