module ActionView::Helpers::CaptureHelper

def capture_with_haml(*args, &block)

def capture_with_haml(*args, &block)
  if Haml::Helpers.block_is_haml?(block)
    #double assignment is to avoid warnings
    _hamlout = _hamlout = eval('_hamlout', block.binding) # Necessary since capture_haml checks _hamlout
    value = nil
    buffer = capture_haml(*args) { value = yield(*args) }
    str =
      if !buffer.empty?
        buffer
      elsif value.is_a?(String)
        value
      else
        ''
      end
    # NonCattingString is present in Rails less than 3.1.0. When support
    # for 3.0 is dropped, this can be removed.
    return ActionView::NonConcattingString.new(str) if defined?(ActionView::NonConcattingString)
    return str
  else
    capture_without_haml(*args, &block)
  end
end

def with_output_buffer_with_haml_xss(*args, &block)

def with_output_buffer_with_haml_xss(*args, &block)
  res = with_output_buffer_without_haml_xss(*args, &block)
  case res
  when Array; res.map {|s| Haml::Util.html_safe(s)}
  when String; Haml::Util.html_safe(res)
  else; res
  end
end