Rubyで、代入に=を使ったdslの作り方。
こんなのを読み込みたかった
aaa = 123 bbb = 456
ほかのサイトだと「作れない」と書いてありますが、全然いけます。
def run(__path) __src_binding = eval(open(__path).read+"\nbinding") __src_binding .local_variables .delete_if{|name| name.to_s[0..1]=="__" } .map{|name| {name:name, variable:__src_binding.local_variable_get(name)} } end
バグが取りきれてないかも。
class Binding (Ruby 2.2.0)を活用してみた。
eval(open(__path).read+"\nbinding")
の"\nbinding"
が肝であり、あまり綺麗じゃないところ。
ruby 2.3.0p0 (2015-12-25 revision 53290) [x64-mingw32]