Module: Haml::RailsHelpers
- Extended by:
- RailsHelpers
- Includes:
- Helpers
- Included in:
- RailsHelpers
- Defined in:
- lib/haml/rails_helpers.rb
Constant Summary collapse
- DEFAULT_PRESERVE_TAGS =
%w[textarea pre code].freeze
Instance Method Summary collapse
- #capture_haml(*args, &block)
- #find_and_preserve(input = nil, tags = DEFAULT_PRESERVE_TAGS, &block)
- #precede(str, &block)
- #preserve(input = nil, &block)
- #succeed(str, &block)
- #surround(front, back = front, &block)
Methods included from Helpers
Instance Method Details
#capture_haml(*args, &block)
49 50 51 |
# File 'lib/haml/rails_helpers.rb', line 49
def capture_haml(*args, &block)
capture(*args, &block)
end
|
#find_and_preserve(input = nil, tags = DEFAULT_PRESERVE_TAGS, &block)
12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/haml/rails_helpers.rb', line 12
def find_and_preserve(input = nil, tags = DEFAULT_PRESERVE_TAGS, &block)
return find_and_preserve(capture_haml(&block), input || tags) if block
tags = tags.each_with_object('') do |t, s|
s << '|' unless s.empty?
s << Regexp.escape(t)
end
re = /<(#{tags})([^>]*)>(.*?)(<\/\1>)/im
input.to_s.gsub(re) do |s|
s =~ re # Can't rely on $1, etc. existing since Rails' SafeBuffer#gsub is incompatible
"<#{$1}#{$2}>#{preserve($3)}</#{$1}>"
end
end
|
#precede(str, &block)
39 40 41 42 |
# File 'lib/haml/rails_helpers.rb', line 39
def precede(str, &block)
str = escape_once(str) unless str.html_safe?
"#{str}#{capture_haml(&block).chomp}\n".html_safe
end
|
#preserve(input = nil, &block)
27 28 29 30 |
# File 'lib/haml/rails_helpers.rb', line 27
def preserve(input = nil, &block)
return preserve(capture_haml(&block)) if block
super.html_safe
end
|
#succeed(str, &block)
44 45 46 47 |
# File 'lib/haml/rails_helpers.rb', line 44
def succeed(str, &block)
str = escape_once(str) unless str.html_safe?
"#{capture_haml(&block).chomp}#{str}\n".html_safe
end
|
#surround(front, back = front, &block)
32 33 34 35 36 37 |
# File 'lib/haml/rails_helpers.rb', line 32
def surround(front, back = front, &block)
output = capture_haml(&block)
front = escape_once(front) unless front.html_safe?
back = escape_once(back) unless back.html_safe?
"#{front}#{output.chomp}#{back}\n".html_safe
end
|