Custom helper with block

I’m using the current release 4.3.3 of Middleman.

I’d like to define a custom helper which accepts a block. For the sake of simplicity, here’s a nonsensical example of wrap_me which wraps the block content with the given tag.

It should be possible to implement this with capture_html provided by Padrino (which is explicitly mentioned in the Middleman docs):

module CustomHelpers
  def wrap_me(tag, &block)
    captured = capture_html(&block)
    concat_content "<#{tag}>" + captured + "</#{tag}>"
  end
end

Put to use in ERB:

<%= wrap_me('span') do %>
  Hello
<% end %>

Now this raises a SyntaxError on line 274 of tilt-2.0.9/lib/tilt/template.rb which tries to eval a string. It appears, the capture is going beyond the “end”.

What am I doing wrong here? How to use capture_html and concat_content if Tilt is preventing helpers from having blocks?

Thanks for your help!

(I’ll ask the same question on Stackoverflow.)

Apparently, with blocks the equal sign has to be omitted. The following works:

<% wrap_me('span') do %>
  Hello
<% end %>