15th Wed
Nested SymbolでDSLをより美しく
Rakeでnamespaceなどを使った場合に、Rubyのシンボルをネストさせたい時があるのですが、
ruby>>
task :foo => :"bar:baz"
<<--
のように書くのが、DSL的にちょっとかっこうわるいです。
そこで、以下のようなものがあればちょっと奇麗に書けます。
ruby>>
class Symbol
def method_missing(method, *args, &block)
if args.empty? && block.nil?
[self, method].join(':').intern
else
super
end
end
end
:foo #=> :foo
:foo.bar #=> :"foo:bar"
:foo.bar.baz #=> :"foo:bar:baz"
<<--
いかがでしょう。
posted by
genki on Wed 15 Apr 2009 at 05:45 with 0 comments