Мой собственный опыт написания DSL на Ruby довольно ограничен, но я сделал следующее:
(1) L-System DSL:
Dragon = TexPlay::LSystem.new {
rule "F" => "F"
rule "X" => "X+YF+"
rule "Y" => "-FX-Y"
angle 90
atom "FX"
}
(2) Инструмент для работы с изображениями:
image.paint {
circle 20, 20, 15, :color => :red
rect 10, 20, 100, 100, :color => :green
pixel 40, 40, :color => :white
}