# HG changeset patch # User Kim Alvefur # Date 1702730875 -3600 # Node ID 034c7af177f0fd0229ae31d3fde4664764299217 # Parent 0369f698682442e3c1cfe2556426a9a3e00985fd util.xtemplate: Test the each template function It iterates over childtags, so a template like {foo|each{...}} would be equivalent to root:childtags("foo"), while a deeper query needs the bit that becomes arguments to :childtags as an argument to each, e.g. {foo/bar|each(baz)} would behave like root:get_child("foo"):get_child("bar"):childtags("baz") diff -r 0369f6986824 -r 034c7af177f0 spec/util_xtemplate_spec.lua --- a/spec/util_xtemplate_spec.lua Tue Dec 12 16:19:04 2023 +0100 +++ b/spec/util_xtemplate_spec.lua Sat Dec 16 13:47:55 2023 +0100 @@ -31,5 +31,13 @@ assert.same(" Hello", xtemplate.render(" {greeting-} ", st.stanza("root"):text_tag("greeting", "Hello"))) assert.same("Hello", xtemplate.render(" {-greeting-} ", st.stanza("root"):text_tag("greeting", "Hello"))) end) + describe("each", function () + it("makes sense", function () + local x = st.stanza("root"):tag("foo"):tag("bar") + for i = 1, 5 do x:text_tag("i", tostring(i)); end + x:reset(); + assert.same("12345", xtemplate.render("{foo/bar|each(i){{#}}}", x)); + end) + end) end) end)