HTML LintのAPIを叩くPerlスクリプト

HTML LintにはAPIが用意されているのでVimからいけるようにPerlスクリプトを書いてみましたが、やばそうなHTMLだと「Validじゃない」と言ってすぐ止まってしまうし、妥当な感じで書いたHTMLだと大体Lintもパスしちゃうので、あまり意味ない感じでした……。WebService::Validator::HTML::W3Cも使ってMarkup Validation Serviceにまず通してエラーが出たらそこで終了、通ったらHTML Lintにも投げるとかにすればそこそこ良さそうではありますが、んー。

#!/usr/bin/env perl

use strict;
use warnings;

use JSON;
use LWP::UserAgent;

my $file = shift;

my $ua = LWP::UserAgent->new();
my $res = $ua->post("http://lint.brihten.com/html/lint/",
  Content_type => "form-data", 
  Content      => [
    filesource           => [$file],
    tags_closeoptional   => 1,
    tags_lowercase       => 1,
    tags_closeempty      => 0,
    attrs_quoted         => 1,
    attrs_lowercase      => 1,
    attrs_simplebooleans => 1,
    tags_whitespace      => 0,
    response_format      => "json"
  ]
);

if ($res->is_success) {
  my $result = from_json($res->decoded_content);
  my $errors = $result->{mistakes};

  if (scalar(@$errors) > 0) {
    foreach my $e (@$errors) {
      print join(":", $file, $e->{line}, $e->{message}), "\n";
    }
  }
} else {
  die $res->status_line;
}

exit;

空要素を閉じてない場合の警告をオフっている以外はデフォルトです。

Web UIからでも使ってみるとわかると思いますけど、本当にイマイチです。ソースが公開されたりしてからが本番ということでしょうか。期待している人はすごく多いと思うので頑張って欲しいですね。