def capture_content
      original, @_output = output, Output.new
      yield
      original.widgets.concat(output.widgets) # todo: test!!!
      output.to_s
    ensure
      @_output = original
    end
def capture_content
      original, @_output = output, Output.new
      yield
      original.widgets.concat(output.widgets) # todo: test!!!
      output.to_s
    ensure
      @_output = original
    end
Creates a whole new output string, executes the block, then converts the
 output string to a string and returns it as raw text. If at all possible
 you should avoid this method since it hurts performance, and use
 +widget+ instead.