Hatena::ブログ(Diary)

cooldaemonの備忘録 RSSフィード

2008-04-24

適当だけど補完用の辞書ファイルを作った

mxml.dict

作り方

まずは、こちらを参考に Flex3 のリファレンスをローカル環境にダウンロード。

Flex3のヘルプ続き - 0x廃棄階層 - 統治局

2008/04/17に取得した http://ss-o.net/txt/Flex3LangrefUrlList.txt

を置いておきます。

wget -i Flex3LangrefUrlList.txt -x

で無駄なくダウンロードできると思います。

その後、下記のような適当な Script を設置して・・・

#!/usr/bin/env perl

use strict;
use warnings;
use feature qw(:5.10);

use version; our $VERSION = qv('0.0.1');

use Carp;
use English qw(-no_match_vars);

use Path::Class qw(dir);
use HTML::TreeBuilder::XPath;
use List::MoreUtils qw(uniq);

my $tree = HTML::TreeBuilder::XPath->new;
my @elements = qw(
    ArgumentError arguments Array Boolean Class Date DefinitionError
    Error EvalError Function int Math Namespace Number Object QName
    RangeError ReferenceError RegExp SecurityError String SyntaxError
    TypeError uint URIError VerifyError XML XMLList
);

dir(
    $ARGV[0],
    'livedocs.adobe.com', 'flex', '3_jp', 'langref', 'mx',
)->recurse(
    callback => sub {
        my ($file) = @_;

        return if ! -f $file || $file->basename ne 'class-list.html';

        $tree->parse_file("$file");
        for ($tree->findnodes('/html/body/table/tr/td/a/text()')) {
            push @elements, $_->getValue();
        }
    }
);

say join "\n", map {'mx:' . $_} sort {$a cmp $b} uniq @elements;

実行する。

% ./mxml_dict_maker.pl [リファレンスをインストールしたディレクトリ] > mxml.dict