Skip to content

Commit

Permalink
Add :p, :div, and :span wrappers
Browse files Browse the repository at this point in the history
  • Loading branch information
jeremyevans committed Jun 16, 2011
1 parent d62c01e commit 47d430c
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 1 deletion.
3 changes: 3 additions & 0 deletions README.rdoc
Expand Up @@ -134,6 +134,9 @@ Forme ships with a bunch of built-in transformers that you can use:

:default :: returns tag without wrapping
:li :: wraps tag in li tag
:p :: wraps tag in p tag
:div :: wraps tag in div tag
:span :: wraps tag in span tag
:trtd :: wraps tag in a tr tag with all parts wrapped in individual td tags, useful for lining up
inputs with the :explicit labeler without CSS

Expand Down
4 changes: 3 additions & 1 deletion lib/forme.rb
Expand Up @@ -876,7 +876,9 @@ def call(label, tag)
end

Forme.register_transformer(:wrapper, :default){|tag| tag}
Forme.register_transformer(:wrapper, :li){|tag| tag.tag(:li, {}, Array(tag))}
[:li, :p, :div, :span].each do |x|
Forme.register_transformer(:wrapper, x){|tag| tag.tag(x, {}, Array(tag))}
end
Forme.register_transformer(:wrapper, :trtd) do |tag|
a = Array(tag)
tag.tag(:tr, {}, a.length == 1 ? tag.tag(:td, {}, a) : [tag.tag(:td, {}, [a.first]), tag.tag(:td, {}, a[1..-1])])
Expand Down
12 changes: 12 additions & 0 deletions spec/forme_spec.rb
Expand Up @@ -304,6 +304,18 @@
Forme::Form.new(:wrapper=>:li).input(:textarea, :id=>'foo').to_s.should == '<li><textarea id="foo"></textarea></li>'
end

specify "wrapper: p wraps tag in an p" do
Forme::Form.new(:wrapper=>:p).input(:textarea, :id=>'foo').to_s.should == '<p><textarea id="foo"></textarea></p>'
end

specify "wrapper: div wraps tag in an div" do
Forme::Form.new(:wrapper=>:div).input(:textarea, :id=>'foo').to_s.should == '<div><textarea id="foo"></textarea></div>'
end

specify "wrapper: span wraps tag in an span" do
Forme::Form.new(:wrapper=>:span).input(:textarea, :id=>'foo').to_s.should == '<span><textarea id="foo"></textarea></span>'
end

specify "wrapper: trtd wraps tag in an tr/td" do
Forme::Form.new(:wrapper=>:trtd).input(:textarea, :id=>'foo').to_s.should == '<tr><td><textarea id="foo"></textarea></td></tr>'
end
Expand Down

0 comments on commit 47d430c

Please sign in to comment.