Amrita2のフックメソッド
こんなこと思いついた。
specify "render child" do t = Amrita2::TemplateText.new <<-END <% odd_even = Amrita2::Hook.new do list.each_with_index do |item, n| if (item % 2) == 0 render_child(:even, :item => item ) else render_child(:odd, :item => item ) end stream << " and " if n < list.size - 1 end end %> <span am:src="odd_even|AcceptData[:hook]"> <span am:src="odd"><span am:src="item" /> is odd</span> <span am:src="even"><span am:src="item" /> is even</span> </span> END list=[1,2,3] t.test_with(binding) do |r| r.strip.should_be == "1 is odd and 2 is even and 3 is odd" end list=[4, 1, 7, 8] t.test_with(binding) do |r| r.strip.should_be == "4 is even and 1 is odd and 7 is odd and 8 is even" end end
開発中のソースは、こちらです。