如果将嵌套块放到Ruby中的方法中,你如何计算嵌套块?

时间:2016-03-17 16:45:55

标签: ruby xml builder

我正在构建一个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)

0 个答案:

没有答案