【发布时间】:2014-11-22 17:32:07
【问题描述】:
我想写一个像这样工作的DSL。
text = Screen.write do
label text: 'Something'
label text: 'stupid'
end
puts text => Somethingstupid
我不太了解元编程(我现在开始学习它)而且在线的 DSL 教程也不是很好。我想我应该有这样的东西:
class Screen
attr_accessor :content
def initialize
@content = ""
end
def self.draw (&block)
self.instance_eval(&block)
@content
end
问题是我不知道label text: 部分。这可能是最重要的部分,因为我以后应该向它添加功能,例如 label text: 'border', border: '|' => |border| 和 label text: 'UPCASE', style: :downcase => upcase。那么我应该如何解决这个问题。欢迎任何想法和帮助。
【问题讨论】:
-
我添加了一个“垂直”写入方法。
标签: ruby metaprogramming dsl