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

開発中のソースは、こちらです。