日向夏特殊応援部隊

俺様向けメモ

HTML::TreeBuilder::Selectがウマーな件

以前、id:naoyaさんのd:id:naoya:20061006:1160134639にて「HTML::TreeBuilder + CSSセレクタがいい感じな件」ってエントリがあったんですが、まさにそのコンボとなるモジュールがリリースされてました。

HTML::TreeBuilder::Select

例えばtext-vimcolorの出力の中でsynIdentifier扱いされるブロックで変数と思しき物だけvar要素に置換して、出力するなら下記みたいなソースになる。

#!/usr/bin/perl

use strict;
use warnings;

use HTML::TreeBuilder::Select;

my $html;
read(STDIN, $html, -s *STDIN);
my $tree = HTML::TreeBuilder::Select->new;
$tree->parse($html);

for my $element (grep { join("", @{$_->content}) =~ /^\$/ } $tree->select("span.synIdentifier")) {
    $element->tag("var");
    $element->attr("class", undef);
}

print $tree->select("pre")->as_HTML;

最近perl書いてないので良く分からなくなってきたよ。