erb_form 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -34,14 +34,17 @@ module ErbForm
34
34
  output = template.render(:file => '/' + (field_template_path || 'a_non_existant_file_to_force_a_missing_template_error'), :locals => {
35
35
  :form => self,
36
36
  :attribute_name => attribute_name,
37
- :options => options
37
+ :error_options => simplify_options(:error, options),
38
+ :hint_options => simplify_options(:hint, options),
39
+ :input_options => simplify_options(:input, options),
40
+ :label_options => simplify_options(:label, options)
38
41
  })
39
42
  @prevent_recursion = false
40
43
  output
41
44
  end
42
45
 
43
46
  def field_template_path(attribute_name)
44
- @field_template_path ||= field_layouts(attribute_name).detect { |template_file|
47
+ field_layouts(attribute_name).detect { |template_file|
45
48
  template.view_paths.exists?(template_file, '', false, {
46
49
  :locale => [template.locale],
47
50
  :formats => template.formats,
@@ -55,6 +58,11 @@ module ErbForm
55
58
  backtrace = backtrace.collect { |line| line.scan(__FILE__).size > 0 ? nil : line }.compact!
56
59
  end
57
60
  end
61
+
62
+ def simplify_options(key, options = {})
63
+ newkey = key == :error ? :error_prefix : key
64
+ options[key].is_a?(Hash) ? options[key] : { newkey => (options[key]) }
65
+ end
58
66
  end
59
67
 
60
68
  class DoubleRenderError < StandardError;
@@ -1,3 +1,3 @@
1
1
  module ErbForm
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -2,7 +2,8 @@ source 'http://rubygems.org'
2
2
 
3
3
  gem 'rails', '3.0.9'
4
4
  gem 'sqlite3'
5
- gem 'erb_form', '0.1.0', :path => '../..'
5
+ gem 'erb_form', '0.1.1', :path => '../..'
6
+ gem 'simple_form', :git => 'git://github.com/plataformatec/simple_form'
6
7
 
7
8
  group :development , :test do
8
9
  gem 'rspec-rails'
@@ -1,3 +1,3 @@
1
1
  <div class="blogs_legacy_field">
2
- <%= form.input attribute_name, form.options %>
2
+ <%= form.input attribute_name %>
3
3
  </div>
@@ -1,3 +1,3 @@
1
1
  <div class="blogs_name_field">
2
- <%= form.input attribute_name, options.dup %>
2
+ <%= form.input attribute_name %>
3
3
  </div>
@@ -0,0 +1,6 @@
1
+ <%= form_for(@blog) do |f| %>
2
+ <fieldset>
3
+ <%= f.field :name %>
4
+ <%= f.field :name, :layout => 'legacy' %>
5
+ </fieldset>
6
+ <% end %>
@@ -0,0 +1,11 @@
1
+ <%= form_for(@blog) do |f| %>
2
+ <fieldset>
3
+ <%= f.field :name, {
4
+ :layout => 'simple_form',
5
+ :error => 'My custom error',
6
+ :hint => 'My custom hint',
7
+ :input => 'My custom input',
8
+ :label => 'My custom label' }
9
+ %>
10
+ </fieldset>
11
+ <% end %>
@@ -0,0 +1,5 @@
1
+ <%= form_for(@blog) do |f| %>
2
+ <fieldset>
3
+ <%= f.field :name, :layout => 'simple_form' %>
4
+ </fieldset>
5
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <div class="simple_form_field">
2
+ <%= form.label attribute_name, label_options %>
3
+ <%= form.input attribute_name, input_options %>
4
+ <%= form.hint attribute_name, hint_options %>
5
+ <%= form.full_error attribute_name, error_options %>
6
+ </div>
@@ -1,3 +1,3 @@
1
1
  <div class="forms_default_legacy_field">
2
- <%= form.input attribute_name, form.options %>
2
+ <%= form.input attribute_name %>
3
3
  </div>
@@ -1,3 +1,3 @@
1
1
  <div class="forms_legacy_field">
2
- <%= form.input attribute_name, form.options %>
2
+ <%= form.input attribute_name %>
3
3
  </div>
@@ -1,3 +1,3 @@
1
1
  <div class="forms_legacy_name_field">
2
- <%= form.input attribute_name, form.options %>
2
+ <%= form.input attribute_name %>
3
3
  </div>
@@ -5,8 +5,7 @@ SimpleForm.setup do |config|
5
5
  # wrapper, change the order or even add your own to the
6
6
  # stack. The options given below are used to wrap the
7
7
  # whole input.
8
- config.wrappers :default, :class => :input,
9
- :hint_class => :field_with_hint, :error_class => :field_with_errors do |b|
8
+ config.wrappers :default, :tag => false do |b|
10
9
  ## Extensions enabled by default
11
10
  # Any of these extensions can be disabled for a
12
11
  # given input by passing: `f.input EXTENSION_NAME => false`.
@@ -1 +1,11 @@
1
1
  en:
2
+ simple_form:
3
+ hints:
4
+ blog:
5
+ name: 'My hint in english'
6
+ labels:
7
+ blog:
8
+ name: 'My english label'
9
+ placeholders:
10
+ blog:
11
+ name: 'type your name here (in english)'
@@ -0,0 +1,21 @@
1
+ require "spec_helper"
2
+
3
+ describe "blogs/render_multiple_layouts" do
4
+ before(:each) do
5
+ assign(:blog, stub_model(Blog,
6
+ :name => "My name",
7
+ ).as_new_record)
8
+ end
9
+
10
+ describe "when there is more than one type of field" do
11
+ it "renders the first field" do
12
+ render
13
+ rendered.should have_selector "div", :class => "blogs_name_field"
14
+ end
15
+
16
+ it "renders the second field" do
17
+ render
18
+ rendered.should have_selector "div", :class => "forms_legacy_name_field"
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,40 @@
1
+ require "spec_helper"
2
+
3
+ describe "blogs/render_simple_form_with_options" do
4
+ before(:each) do
5
+ assign(:blog, stub_model(Blog,
6
+ :name => "",
7
+ :errors => {:name => ['must not be blank']}
8
+ ).as_new_record)
9
+ end
10
+
11
+ describe "when there are simeple form helpers" do
12
+ it "finds the correct layout file" do
13
+ render
14
+ rendered.should have_selector "div", :class => "simple_form_field"
15
+ end
16
+
17
+ it "renders the label" do
18
+ render
19
+ rendered.should have_selector "label", :class => "string required"
20
+ rendered.should have_selector "abbr", :title => "required"
21
+ rendered.should have_selector "label", :content => "My custom label"
22
+ end
23
+
24
+ it "renders the input" do
25
+ render
26
+ rendered.should have_selector "input", :class => "string required"
27
+ rendered.should have_selector "input", :placeholder => "type your name here (in english)"
28
+ end
29
+
30
+ it "renders the hint" do
31
+ render
32
+ rendered.should contain "My custom hint"
33
+ end
34
+
35
+ it "renders the error" do
36
+ render
37
+ rendered.should contain "My custom error must not be blank"
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,40 @@
1
+ require "spec_helper"
2
+
3
+ describe "blogs/render_with_simple_form" do
4
+ before(:each) do
5
+ assign(:blog, stub_model(Blog,
6
+ :name => "",
7
+ :errors => {:name => ['must not be blank']}
8
+ ).as_new_record)
9
+ end
10
+
11
+ describe "when there are simeple form helpers" do
12
+ it "finds the correct layout file" do
13
+ render
14
+ rendered.should have_selector "div", :class => "simple_form_field"
15
+ end
16
+
17
+ it "renders the label" do
18
+ render
19
+ rendered.should have_selector "label", :class => "string required"
20
+ rendered.should have_selector "abbr", :title => "required"
21
+ rendered.should have_selector "label", :content => "My english label"
22
+ end
23
+
24
+ it "renders the input" do
25
+ render
26
+ rendered.should have_selector "input", :class => "string required"
27
+ rendered.should have_selector "input", :placeholder => "type your name here (in english)"
28
+ end
29
+
30
+ it "renders the hint" do
31
+ render
32
+ rendered.should contain "My hint in english"
33
+ end
34
+
35
+ it "renders the error" do
36
+ render
37
+ rendered.should contain "Name must not be blank"
38
+ end
39
+ end
40
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: erb_form
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-21 00:00:00.000000000Z
12
+ date: 2012-02-23 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: simple_form
16
- requirement: &2152397120 !ruby/object:Gem::Requirement
16
+ requirement: &2153822240 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: 2.0.0.rc
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2152397120
24
+ version_requirements: *2153822240
25
25
  description: Wrap form helper methods in re-usable erb templates.
26
26
  email:
27
27
  - 23inhouse@gmail.com
@@ -53,6 +53,10 @@ files:
53
53
  - spec/test_app/app/views/blogs/missing_attribute_template_error.html.erb
54
54
  - spec/test_app/app/views/blogs/missing_layout_template_error.html.erb
55
55
  - spec/test_app/app/views/blogs/name_field.html.erb
56
+ - spec/test_app/app/views/blogs/render_multiple_layouts.html.erb
57
+ - spec/test_app/app/views/blogs/render_simple_form_with_options.html
58
+ - spec/test_app/app/views/blogs/render_with_simple_form.html.erb
59
+ - spec/test_app/app/views/blogs/simple_form_field.html.erb
56
60
  - spec/test_app/app/views/forms/default/field.html.erb
57
61
  - spec/test_app/app/views/forms/default/legacy_field.html.erb
58
62
  - spec/test_app/app/views/forms/default/name_field.html.erb
@@ -84,6 +88,9 @@ files:
84
88
  - spec/test_app/spec/views/blogs/find_layouts.html.erb_spec.rb
85
89
  - spec/test_app/spec/views/blogs/missing_attribute_template_error.html.erb_spec.rb
86
90
  - spec/test_app/spec/views/blogs/missing_layout_template_error.html.erb_spec.rb
91
+ - spec/test_app/spec/views/blogs/render_multiple_layouts.html.erb_spec.rb
92
+ - spec/test_app/spec/views/blogs/render_simple_form_with_options.html.erb_spec
93
+ - spec/test_app/spec/views/blogs/render_with_simple_form.html.erb_spec.rb
87
94
  homepage: ''
88
95
  licenses: []
89
96
  post_install_message:
@@ -126,6 +133,10 @@ test_files:
126
133
  - spec/test_app/app/views/blogs/missing_attribute_template_error.html.erb
127
134
  - spec/test_app/app/views/blogs/missing_layout_template_error.html.erb
128
135
  - spec/test_app/app/views/blogs/name_field.html.erb
136
+ - spec/test_app/app/views/blogs/render_multiple_layouts.html.erb
137
+ - spec/test_app/app/views/blogs/render_simple_form_with_options.html
138
+ - spec/test_app/app/views/blogs/render_with_simple_form.html.erb
139
+ - spec/test_app/app/views/blogs/simple_form_field.html.erb
129
140
  - spec/test_app/app/views/forms/default/field.html.erb
130
141
  - spec/test_app/app/views/forms/default/legacy_field.html.erb
131
142
  - spec/test_app/app/views/forms/default/name_field.html.erb
@@ -157,3 +168,6 @@ test_files:
157
168
  - spec/test_app/spec/views/blogs/find_layouts.html.erb_spec.rb
158
169
  - spec/test_app/spec/views/blogs/missing_attribute_template_error.html.erb_spec.rb
159
170
  - spec/test_app/spec/views/blogs/missing_layout_template_error.html.erb_spec.rb
171
+ - spec/test_app/spec/views/blogs/render_multiple_layouts.html.erb_spec.rb
172
+ - spec/test_app/spec/views/blogs/render_simple_form_with_options.html.erb_spec
173
+ - spec/test_app/spec/views/blogs/render_with_simple_form.html.erb_spec.rb