2006-07-14
SpiderMonkey 使って perl で簡単な Syntax チェック用の Script を書いてみた
デバック用に今更インストールしてみた。
curl -O http://ftp.mozilla.org/pub/mozilla.org/js/js-1.5.tar.gz tar -zxvf js-1.5.tar.gz cd ./js/src make -f Makefile.ref cp ./Darwin_DBG.OBJ/js /usr/local/bin/
Darwin_DBG.OBJ の箇所は環境によって違う。
js コマンドのコピーはお好きな場所へ・・・。
※ js-1.60.tar.gz でも同じように make できます。
#!/usr/local/bin/js print( 'Hello' + 'World' );
と言う Script を書いて実行したりできます。
個人的に、簡単な確認は js コマンドで行い、最終的なデバックは FireBug で行う・・・という使い分けかなぁ。
って事で、こんなん作ってみました。
#!/usr/bin/perl
use strict;
use warnings;
use JavaScript::SpiderMonkey;
my $file_name = $ARGV[0];
if (!$file_name) {
print "Usage : js_checker.pl [Java Script file name]?n";
exit;
}
open my $fh, $file_name or die "Couldn't open $file_name: $!";
my $source = "?n";
while (<$fh>) {
$source .= $_;
}
close $fh or die "Couldn't close $file_name: $!";
my $js = JavaScript::SpiderMonkey->new();
$js->init();
$js->property_by_path( 'window' );
$js->property_by_path( 'document' );
$js->property_by_path( 'navigator' );
$js->function_set( 'alert', sub { warn @_, "?n" } );
my $rc = $js->eval( $source );
$rc ? print "Syntax OK!!?n" : print $@, "?n";
ブラウザの組み込みオブジェクトや組み込む関数は、適宜追加の方向で(w;
ただ、 document.getElementById() とか、どうしたら良いんだろうなぁ・・・。
(この問題は、id:cooldaemon:20070221 で解決)
.vimrc に下記を追加して使う予定。
autocmd Syntax js map <F4> :w<CR>:!~/bin/js_checker.pl -cw %<CR> | set makeprg=?~/bin/js_checker.pl? -wc? %
ちなみに、JavaScript::SpiderMonkey は、こんな感じでインストール。
cd [js ディレクトリが存在するディレクトリ] curl -O http://search.cpan.org/CPAN/authors/id/T/TB/TBUSCH/JavaScript-SpiderMonkey-0.16.tar.gz tar -zxvf JavaScript-SpiderMonkey-0.16.tar.gz cd JavaScript-SpiderMonkey-0.16 perl Makefile.PL make && make test && make install
インストールの詳細は、ここをよく読む。
参考URLは、下記の通り。
トラックバック - http://d.hatena.ne.jp/cooldaemon/20060714/1152878607
リンク元
- 3 http://www.bloglines.com/search?q=cooldaemon&ql=ja&s=f&pop=l&news=m
- 2 http://blog.livedoor.jp/dankogai/archives/50553054.html
- 2 http://blogger.blog360.jp/389157/14368998
- 1 http://a.hatena.ne.jp/zankey/simple
- 1 http://b.hatena.ne.jp/t/catalyst
- 1 http://blog.livedoor.jp/dankogai/archives/50549666.html
- 1 http://d.hatena.ne.jp/keyword/Hobbit?kid=162362
- 1 http://d.hatena.ne.jp/keyworddiary/vim
- 1 http://d.hatena.ne.jp/n2s/comment?date=20060712
- 1 http://d.hatena.ne.jp/t-tkzw/20060713/p1