列出液体模板中的所有节点?

时间:2012-08-13 06:05:37

标签: ruby liquid

考虑以下解析模板及其root.nodelist的循环:

text = '{% if true %}{{ "poland" | capitalize }}{% else %}{{ "portugal" | capitalize}}{% endif %}'
template = Liquid::Template.parse(text)
template.root.nodelist.each { |node| p node }

仅打印:

Portugal 

(而不是波兰)

如何从模板列出所有节点(包括液体变量,标签等)?特别是if / else逻辑中的那些?

1 个答案:

答案 0 :(得分:0)

我无法在条件中找到直接访问Blocks的方法,但我使用了一种解决方法,使用以下代码向Class添加方法

def b
  @blocks
end

然后使用此代码

template.root.nodelist[0].b.each { |a| p a.attachment[0].name }

我可以找到您要找的列表