Fork me on GitHub

2008/06/26

はてな
vimで自前でYAML読み込むとか面倒くさすぎる。
こう言う時はif_pythonとかif_perlとかを使わせてもらう。運良くvimスクリプトはjsonと相性が良いのでYAMLを読み込み、JSONに変換してvimに戻してあげる。
function! LoadYAML(file)
  perl << EOF
use YAML::Syck;
use JSON::Syck qw(Dump);
eval {
  VIM::DoCommand("let ret = " . Dump(LoadFile("".VIM::Eval('a:file'))));
};
VIM::DoCommand("let v:errmsg = substitute('$@', \"\\n\", '', 'g')") if $@;
EOF
  if !exists('ret')
    throw v:errmsg
  endif
  return ret
endfunction

echo LoadYAML("config.yaml")
戻り値はDictionary形式になります。
読み込めなかった場合はthrowしているのでvim7限定になりますがcatchしてやって下さい。

さて、if_perlですがperl510で動かなくなってました。今日パッチを作成してvim-devに送ったのですが、如何せん自信がありません(Shibuya.xsでvimmerな皆様、どうか私にお力をお貸し下さい)。
パッチは
vim72-perl510-fix.diff
にあります。不具合報告等あればご連絡下さい。
Posted at 19:18 in ソフトウェア::vim | WriteBacks (0)
Tagged as: perl, tips, vim, yaml
Bookmarks: このエントリーのtweets add to hatena add to hatena | add to delicious.com | add to livedoor.clip add to livedoor.clip | add to buzzurl add to buzzurl | add to fc2bookmark add to fc2bookmark | add to Yahoo Bookmark add to Yahoo Bookmark | add to Pookmark add to Pookmark

2007/10/30

はてな
データだけ乗っけてscriptソース載せず...ってのは好きじゃないなぁ...
otsuneさんあたりに、「元ソース記事載せないのは好きじゃないなぁ...」と言われそうだけど

use strict;
use Web::Scraper;
use URI;
use YAML;

my $emoji = scraper {
  process '//table[@width="100%" and @cellpadding="2"]//tr/td/font/../..',
    'emoji[]' => scraper {
      process '//td[2]/font', code => 'TEXT';
      process '//td[3]/font', char => 'TEXT';
    };
  result 'emoji';
};

my @urls = (
  'http://72.14.253.104/search?q=cache:http%3A//developers.softbankmobile.co.jp/dp/tool_dl/web/picword_01.php',
  'http://72.14.253.104/search?q=cache:http%3A//developers.softbankmobile.co.jp/dp/tool_dl/web/picword_02.php',
  'http://72.14.253.104/search?q=cache:http%3A//developers.softbankmobile.co.jp/dp/tool_dl/web/picword_03.php',
  'http://72.14.253.104/search?q=cache:http%3A//developers.softbankmobile.co.jp/dp/tool_dl/web/picword_04.php',
  'http://72.14.253.104/search?q=cache:http%3A//developers.softbankmobile.co.jp/dp/tool_dl/web/picword_05.php',
  'http://72.14.253.104/search?q=cache:http%3A//developers.softbankmobile.co.jp/dp/tool_dl/web/picword_06.php',
);
my $res;
foreach my $url (@urls) { push @$res, @{$emoji->scrape(URI->new($url))} };
warn Dump $res;
Posted at 15:16 in web | WriteBacks (2)
Tagged as: perl, Web::Scraper, yaml
Bookmarks: このエントリーのtweets add to hatena add to hatena | add to delicious.com | add to livedoor.clip add to livedoor.clip | add to buzzurl add to buzzurl | add to fc2bookmark add to fc2bookmark | add to Yahoo Bookmark add to Yahoo Bookmark | add to Pookmark add to Pookmark