Sha256: 18abe8d20d0e2ca99bdd907838f2f2c7639074091a93d76cfcd39e262a6d350c
Contents?: true
Size: 1.91 KB
Versions: 3
Compression:
Stored size: 1.91 KB
Contents
require 'pathname' module HamlHelper # # acts like haml_tag, capture_haml, or haml_concat, depending on how it is called. # # two or more args --> like haml_tag # one arg and a block --> like haml_tag # zero args and a block --> like capture_haml # one arg and no block --> like haml_concat # # additionally, we allow the use of more than one class. # # some examples of these usages: # # def display_robot(robot) # haml do # like capture_haml # haml '.head', robot.head_html # like haml_tag # haml '.head' do # same # haml robot.head_html # end # haml '.body.metal', robot.body_html # like haml_tag, but with multiple classes # haml '<a href="/x">link</a>' # like haml_concat # end # end # # wrapping the helper in a capture_haml call is very useful, because then # the helper can be used wherever a normal helper would be. # def haml(name=nil, *args, &block) if name if args.empty? and block.nil? haml_concat name else if name =~ /^(.*?\.[^\.]*)(\..*)$/ # allow chaining of classes if there are multiple '.' in the first arg name = $1 classes = $2.gsub('.',' ') hsh = args.detect{|i| i.is_a?(Hash)} unless hsh hsh = {} args << hsh end hsh[:class] = classes end haml_tag(name, *args, &block) end else capture_haml(&block) end end def content_tag(name, content_or_options_with_block = nil, options = nil, &block) if block_given? options = content_or_options_with_block if content_or_options_with_block.is_a?(Hash) capture_haml { haml(name, options, &block) } else capture_haml { haml_tag(name, content_or_options_with_block, options) } end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
amber-0.3.12 | lib/amber/render/helpers/haml_helper.rb |
amber-0.3.11 | lib/amber/render/helpers/haml_helper.rb |
amber-0.3.8 | lib/amber/render/helpers/haml_helper.rb |