2008-06-18
hparser ・全要素を取得
Parser#parse が block な array を返すので全部平べったくしてやる。
サンプルコードで spec 使うのかっこいいのでまねっこ( http://subtech.g.hatena.ne.jp/cho45/20080615/1213514501 )。久しぶりに rspec 書いてるけど俺の知ってる rspec とはだいぶ書き方違うよママン。
require 'rubygems'
require 'hparser'
parser = HParser::Parser.new
parsed = parser.parse(DATA.read)
# 全部の要素を取り出す
elements = parsed.inject([]) do |res, el|
if el.class.public_method_defined? :content
res << [el.content]
else
res << el
end
end.flatten
hatena_ids = elements.select {|el| el.kind_of? HParser::Inline::HatenaId }
require 'spec'
describe '要素を取り出して' do
it "はてなIDがとれてるか" do
hatena_ids.map {|e| e.name}.should == %w(cho45 antipop)
end
end
__END__
* てすと
aa
>|
foobar
|<
id:cho45 さん、結婚してください!(id:antipop より)
- http://foobar.baz/
hparser
はてな記法をパースできる ruby のパーサなんだけど、設計がすばらしいなぁ。id 記法で書かれていたらそこにフックしてなんたら、とかも簡単にできるし。作者は d:id:mzp さんかぁ。
ライセンスは Ruby's ぽいので、github に fork。
なんか spec.to_ruby が
uninitialized constant Gem::Specification::Date
でエラって .gemspec ファイルが作れない罠
追記
ちょさんにrequire 'date' すればいいと教えて貰う。必要なライブラリは require しといてくれよ ubygems さん…。
tig.vim
だれかつくってくれないかnnnn-