Sha256: 807327a9bee18401c14e5212347b3f0f05b3c9f9cd9a28f361f958498af4640f
Contents?: true
Size: 1.33 KB
Versions: 3
Compression:
Stored size: 1.33 KB
Contents
require 'hamlit/helpers' # Currently this Hamlit::Helpers depends on # ActionView internal implementation. (not desired) module Hamlit module RailsHelpers include Helpers extend self DEFAULT_PRESERVE_TAGS = %w[textarea pre code].freeze 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 def preserve(input = nil, &block) return preserve(capture_haml(&block)) if block super.html_safe end def surround(front, back = front, &block) output = capture_haml(&block) "#{escape_once(front)}#{output.chomp}#{escape_once(back)}\n".html_safe end def precede(str, &block) "#{escape_once(str)}#{capture_haml(&block).chomp}\n".html_safe end def succeed(str, &block) "#{capture_haml(&block).chomp}#{escape_once(str)}\n".html_safe end def capture_haml(*args, &block) capture(*args, &block) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
hamlit-2.6.1 | lib/hamlit/rails_helpers.rb |
hamlit-2.6.0 | lib/hamlit/rails_helpers.rb |
hamlit-2.5.0 | lib/hamlit/rails_helpers.rb |