Hatena::Groupsubtech

ういはるかぜの化学

Sunday, November 05, 2006

[] 野良Plugin - Shibuya.Plaggers::Publish::Kwiki を整理してみた 00:43  野良Plugin - Shibuya.Plaggers::Publish::Kwiki を整理してみた - ういはるかぜの化学 を含むブックマーク はてなブックマーク -  野良Plugin - Shibuya.Plaggers::Publish::Kwiki を整理してみた - ういはるかぜの化学

http://wiki.shibuya.pl/?%E9%87%8E%E8%89%AFPlugin

最近出てきたプラグインを追記したり、種類ごとに分けたりとか。

[] Filter::FixHTML 10:12  Filter::FixHTML - ういはるかぜの化学 を含むブックマーク はてなブックマーク -  Filter::FixHTML - ういはるかぜの化学

何らかの理由でHTMLタグの対応が取れないなどの問題が発生した場合でも何とかするためのフィルタ。やってることはかなりアレ

package Plagger::Plugin::Filter::FixHTML;
use strict;
use base qw( Plagger::Plugin );

use HTML::TreeBuilder;

sub register {
    my($self, $context) = @_;

    $context->register_hook(
        $self,
        'update.entry.fixup' => \&filter
    );
}

sub filter {
    my($self, $context, $args) = @_;

    if (defined $args->{entry}->body && $args->{entry}->body->is_html) {
        my $body_html = '';
        my $tree = HTML::TreeBuilder->new_from_content($args->{entry}->body->html);

        for my $c ( $tree->find_by_tag_name("body")->content_list ) {
            $body_html .= ref $c ? $c->as_XML : $c;
        }

        $args->{entry}->body($body_html);
    }
}

1;
__END__

=head1 NAME

Plagger::Plugin::Filter::FixHTML - Fix entry HTML

=head1 SYNOPSIS

- module: Filter::FixHTML

=head1 DESCRIPTION

This plugin fixes a broken HTML in entry body.

=head1 CONFIG

=head1 AUTHOR

Mayuki Sawatari

=head1 SEE ALSO

L<Plagger>

=cut

テキストノードのことを忘れていたのでその辺を修正。

トラックバック - http://subtech.g.hatena.ne.jp/mayuki/20061105