我正在构建一个xml文档,而不使用Ruby中的builder gem。如果我有这样的代码:
def method_missing(sym, *args, &block)
tag_name = "<#{sym}/>"
args.each do |hash|
hash.each {|k,v| tag_name.insert(-3,(" #{k}=\"#{v}\"" )) }
end
if block
tag_name = "<#{sym}>"+ block.call + "</#{sym}>
end
tag_name
end
doc = XmlDocument.new(true)
doc.hello{doc.goodbye{doc.no}}
了解#goodbye和#no缺失方法如何作为嵌套块传递?我需要能够将它们计算出来,这样我就可以根据它们的顺序在构建器模式中缩进它们。如何计算它们以添加缩进?我可以使用循环结构吗?我用来计算块或块深度的所有尝试都只计算外层(XmlDocument#goodbye)