RubyでDSL作ってみる
てことで
- DSL用のメソッドAを用意
- DSLで書かれたファイルを読み込む
- メソッドAと同じインスタンスで、ファイルの内容をinstance_eval
- -_-b
Example
DSL用のメソッドを持ったクラス
class DSL attr_reader :names def self.execute contents = File.open('DSLFile', 'rb'){ |f| f.read } dsl = new dsl.instance_eval(contents) p dsl.names end def initialize @names = [] end def hello(name) @names << name end end
DSLファイル
hello 'world' hello 'again' hello 'kitty'
実行してみる
DSL.execute ["world", "again", "kitty"]