formulary 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +65 -34
  3. data/formulary.gemspec +0 -1
  4. data/lib/formulary.rb +1 -5
  5. data/lib/formulary/html_form.rb +31 -13
  6. data/lib/formulary/html_form/fields.rb +16 -0
  7. data/lib/formulary/html_form/fields/checkbox_group.rb +1 -1
  8. data/lib/formulary/html_form/fields/color_input.rb +24 -0
  9. data/lib/formulary/html_form/fields/date_input.rb +59 -0
  10. data/lib/formulary/html_form/fields/email_input.rb +11 -2
  11. data/lib/formulary/html_form/fields/field.rb +15 -3
  12. data/lib/formulary/html_form/fields/field_group.rb +3 -3
  13. data/lib/formulary/html_form/fields/input.rb +1 -1
  14. data/lib/formulary/html_form/fields/month_input.rb +15 -0
  15. data/lib/formulary/html_form/fields/number_input.rb +63 -0
  16. data/lib/formulary/html_form/fields/password_input.rb +7 -0
  17. data/lib/formulary/html_form/fields/range_input.rb +7 -0
  18. data/lib/formulary/html_form/fields/search_input.rb +7 -0
  19. data/lib/formulary/html_form/fields/select.rb +1 -1
  20. data/lib/formulary/html_form/fields/week_input.rb +15 -0
  21. data/lib/formulary/html_form/labels.rb +39 -0
  22. data/lib/formulary/version.rb +1 -1
  23. data/spec/html_form/fields/checkbox_group_spec.rb +23 -10
  24. data/spec/html_form/fields/color_input_spec.rb +58 -0
  25. data/spec/html_form/fields/date_input_spec.rb +60 -0
  26. data/spec/html_form/fields/email_input_spec.rb +16 -6
  27. data/spec/html_form/fields/field_spec.rb +40 -1
  28. data/spec/html_form/fields/hidden_input_spec.rb +3 -1
  29. data/spec/html_form/fields/month_input_spec.rb +60 -0
  30. data/spec/html_form/fields/number_input_spec.rb +67 -0
  31. data/spec/html_form/fields/password_input_spec.rb +29 -0
  32. data/spec/html_form/fields/radio_button_group_spec.rb +27 -8
  33. data/spec/html_form/fields/range_input_spec.rb +20 -0
  34. data/spec/html_form/fields/search_input_spec.rb +18 -0
  35. data/spec/html_form/fields/select_spec.rb +10 -7
  36. data/spec/html_form/fields/tel_input_spec.rb +3 -3
  37. data/spec/html_form/fields/text_input_spec.rb +3 -3
  38. data/spec/html_form/fields/textarea_spec.rb +2 -2
  39. data/spec/html_form/fields/week_input_spec.rb +60 -0
  40. data/spec/html_form_spec.rb +234 -100
  41. data/spec/support/element_helper.rb +1 -1
  42. data/spec/support/shared_examples_for_pattern.rb +4 -2
  43. data/spec/support/shared_examples_for_required.rb +4 -2
  44. metadata +114 -106
@@ -1,130 +1,264 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Formulary::HtmlForm do
4
- let(:markup) do
5
- <<-EOS
6
- <div class="lead widget">
4
+ context "with a form with complex validations" do
5
+ let(:markup) do
6
+ <<-EOS
7
+ <div class="lead widget">
7
8
 
8
- <p class="heading">Apply</p>
9
+ <p class="heading">Apply</p>
9
10
 
10
- <form id="lead_form" action="{{ widget.lead_form.submission_url.value }}" method="POST">
11
+ <form id="lead_form" action="{{ widget.lead_form.submission_url.value }}" method="POST">
11
12
 
12
- <div class="field">
13
- <label for="first_name">First Name</label>
14
- <input type="text" name="first_name" required />
15
- </div>
16
-
17
- <div class="field">
18
- <label for="last_name">Last Name</label>
19
- <input type="text" name="last_name" required />
20
- </div>
21
-
22
- <div class="field">
23
- <label for="email">Email</label>
24
- <input type="email" name="email" required />
25
- </div>
26
-
27
- <div class="field">
28
- <label for="g5_email">G5 Email</label>
29
- <input type="email" name="g5_email" pattern="@getg5\.com$" />
30
- </div>
31
-
32
- <div class="field">
33
- <label for="phone">Phone</label>
34
- <input type="tel" name="phone" />
35
- </div>
36
-
37
- <div class="field">
38
- <label for="message">Message</label>
39
- <textarea name="message"></textarea>
40
- </div>
41
-
42
- <div class="field">
43
- <label for="unit">Unit</label>
44
- <select name="unit">
45
- <option>5x5</option>
46
- <option value="5x10">Five By Ten</option>
47
- </select>
48
- </div>
49
-
50
- <input type="radio" name="foods" value="bacon">Bacon<br>
51
- <input type="radio" name="foods" value="butter" checked>Butter<br>
52
-
53
- <input type="radio" name="beverages" value="water">Water<br>
54
-
55
- <input type="hidden" name="syndication_url" value="example.com" />
56
-
57
- <input type="checkbox" name="terms">
58
-
59
- <input type="submit" value="Apply" />
60
- </form>
61
- </div>
62
- EOS
63
- end
13
+ <div class="field">
14
+ <label for="first_name">First Name</label>
15
+ <input type="text" id="first_name" name="first_name" required />
16
+ </div>
17
+
18
+ <div class="field">
19
+ <input type="text" name="last_name" required />
20
+ </div>
21
+
22
+ <div class="field">
23
+ <label for="email">Email</label>
24
+ <input type="email" id="email" name="email" required />
25
+ </div>
26
+
27
+ <div class="field">
28
+ <label for="company_email">G5 Email</label>
29
+ <input type="email" id="company_email" name="g5_email" pattern="@getg5\.com$" />
30
+ </div>
31
+
32
+ <div class="field">
33
+ <label for="phone">Phone</label>
34
+ <input type="tel" name="phone" />
35
+ </div>
36
+
37
+ <div class="field">
38
+ <label for="message">Message</label>
39
+ <textarea name="message"></textarea>
40
+ </div>
41
+
42
+ <div class="field">
43
+ <label for="unit">Unit</label>
44
+ <select name="unit">
45
+ <option>5x5</option>
46
+ <option value="5x10">Five By Ten</option>
47
+ </select>
48
+ </div>
49
+
50
+ <fieldset>
51
+ <legend>What is your favorite grease?</legend>
52
+ <label><input type="radio" name="foods" value="bacon">Bacon</label>
53
+ <label><input type="radio" name="foods" value="butter" checked>Butter</label>
54
+ </fieldset>
55
+
56
+ <input type="radio" name="beverages" value="water">Water<br>
57
+
58
+ <label for="date">Date</label>
59
+ <input type="date" id="date" name="date" />
60
+
61
+ <input type="hidden" name="syndication_url" value="example.com" />
62
+
63
+ <label>
64
+ <input type="checkbox" name="terms">I accept your terms
65
+ </label>
66
+
67
+ <div class="field">
68
+ <label for="labeless_field"></label>
69
+ <input type="email" id="labeless_field" name="labeless_field" />
70
+ </div>
71
+
72
+ <div class="field">
73
+ <label for="number">Number</label>
74
+ <input type="number" name="number" id="number" min="5" />
75
+ </div>
64
76
 
65
- let(:html_form) { Formulary::HtmlForm.new(markup) }
77
+ <div class="field">
78
+ <label for="range">Range</label>
79
+ <input type="range" name="range" id="range" step="5" />
80
+ </div>
66
81
 
67
- context "unsupported field type" do
68
- let(:markup) { %{<input type="bacon" name="delicious" />} }
82
+ <div class="field">
83
+ <label for="search">Search</label>
84
+ <input type="search" name="search" id="search" />
85
+ </div>
69
86
 
70
- it "explodes" do
71
- expect { html_form }.to raise_error(Formulary::UnsupportedFieldType, /bacon/)
87
+ <div class="field">
88
+ <label for="password">Password</label>
89
+ <input type="password" name="password" id="password" />
90
+ </div>
91
+
92
+ <div class="field">
93
+ <label for="color">Color</label>
94
+ <input type="color" name="color" id="color" />
95
+ </div>
96
+
97
+ <input type="submit" value="Submit" />
98
+ <input type="button" value="Button" />
99
+ <input type="image" value="Image" />
100
+ <input type="reset" value="Reset" />
101
+ </form>
102
+ </div>
103
+ EOS
72
104
  end
73
- end
74
105
 
75
- describe "validations" do
76
- let(:valid_params) do
77
- {
78
- first_name: "First",
79
- last_name: "Last",
80
- email: "test@test.com",
81
- g5_email: "test@getg5.com",
82
- unit: "5x5"
83
- }
106
+ let(:html_form) { Formulary::HtmlForm.new(markup) }
107
+
108
+ context "unsupported field type" do
109
+ let(:markup) { %{<input type="bacon" name="delicious" />} }
110
+
111
+ it "explodes" do
112
+ expect { html_form }.to raise_error(Formulary::UnsupportedFieldType, /bacon/)
113
+ end
84
114
  end
85
115
 
86
- describe "#valid?" do
87
- subject(:valid) { html_form.valid?(params) }
116
+ context "with a mismatch of field types for a group" do
117
+ let(:markup) do
118
+ %{
119
+ <input type="radio" name="bacon" />
120
+ <input type="checkbox" name="bacon" />
121
+ }
122
+ end
88
123
 
89
- context "with a valid submission" do
90
- let(:params) { valid_params }
91
- it { should be_true }
124
+ it "explodes" do
125
+ expect { html_form }.to raise_error(Formulary::UnsupportedFieldType, /bacon/)
92
126
  end
127
+ end
93
128
 
94
- context "with an invalid submission" do
95
- let(:params) { {} }
96
- it { should be_false }
129
+ describe "validations" do
130
+ let(:valid_params) do
131
+ {
132
+ first_name: "First",
133
+ last_name: "Last",
134
+ email: "test@test.com",
135
+ g5_email: "test@getg5.com",
136
+ unit: "5x5"
137
+ }
97
138
  end
98
139
 
99
- context "due to unexpected parameters" do
100
- let(:params) { valid_params.merge(extra: "test") }
140
+ describe "#valid?" do
141
+ subject(:valid) { html_form.valid?(params) }
101
142
 
102
- it "raises a Formulary::UnexpectedParameter exception" do
103
- expect { valid }.to raise_error(Formulary::UnexpectedParameter, /extra/)
143
+ context "with a valid submission" do
144
+ let(:params) { valid_params }
145
+ it { should be_true }
146
+ end
147
+
148
+ context "with an invalid submission" do
149
+ let(:params) { {} }
150
+ it { should be_false }
151
+ end
152
+
153
+ context "due to unexpected parameters" do
154
+ let(:params) { valid_params.merge(extra: "test") }
155
+
156
+ it "raises a Formulary::UnexpectedParameter exception" do
157
+ expect { valid }.to raise_error(Formulary::UnexpectedParameter, /extra/)
158
+ end
159
+ end
160
+ end
161
+
162
+ describe "#errors" do
163
+ before { html_form.valid?(params) }
164
+ subject { html_form.errors }
165
+
166
+ context "with a valid submission" do
167
+ let(:params) { valid_params }
168
+ it { should be_empty }
169
+ end
170
+
171
+ context "with an invalid submission" do
172
+ let(:params) do
173
+ {
174
+ email: "invalid",
175
+ g5_email: "test@example.com",
176
+ foods: "water",
177
+ date: "4 score and 7 years ago",
178
+ number: "1",
179
+ range: "8"
180
+ }
181
+ end
182
+
183
+ its(["first_name"]) { should eql("'First Name' is required") }
184
+ its(["email"]) { should include("'Email' is not a valid email address") }
185
+ its(["g5_email"]) { should include("'G5 Email' does not match the expected format") }
186
+ its(["foods"]) { should include("'What is your favorite grease?' must be chosen from the available options") }
187
+ its(["date"]) { should include("'Date' is not a properly formatted date") }
188
+ its(["number"]) { should include("'Number' must be greater than or equal to 5") }
189
+ its(["range"]) { should include("'Range' must be a step of 5, the nearest valid values are 5 and 10") }
104
190
  end
105
191
  end
106
192
  end
107
193
 
108
- describe "#errors" do
109
- before { html_form.valid?(params) }
110
- subject { html_form.errors }
194
+ describe "#label_for_field" do
195
+ subject { html_form.label_for_field(field_name) }
111
196
 
112
- context "with a valid submission" do
113
- let(:params) { valid_params }
114
- it { should be_empty }
197
+ context "with a label with a for attribute" do
198
+ let(:field_name) { "first_name" }
199
+ it { should eq("First Name") }
115
200
  end
116
201
 
117
- context "with an invalid submission" do
118
- let(:params) do
119
- {
120
- email: "invalid", g5_email: "test@example.com", foods: "water"
121
- }
122
- end
202
+ context "with no matching label" do
203
+ let(:field_name) { "last_name" }
204
+ it { should be_nil }
205
+ end
206
+
207
+ context "with a label with no text" do
208
+ let(:field_name) { "labeless_field" }
209
+ it { should eq("") }
210
+ end
211
+
212
+ context "with a parent label" do
213
+ let(:field_name) { "terms" }
214
+ it { should eq("I accept your terms") }
215
+ end
216
+
217
+ context "with a name and id mismatch on the field" do
218
+ let(:field_name) { "g5_email" }
219
+ it { should eq("G5 Email") }
220
+ end
221
+
222
+ context "with a fieldset" do
223
+ let(:field_name) { "foods" }
224
+ its(["fieldset"]) { should eq("What is your favorite grease?") }
225
+ its(["bacon"]) { should eq("Bacon") }
226
+ its(["butter"]) { should eq("Butter") }
227
+ end
228
+ end
229
+ end
230
+
231
+ context "with a form with nested fields" do
232
+ let(:markup) do
233
+ <<-EOS
234
+ <form id="lead_form" action="{{ widget.lead_form.submission_url.value }}" method="POST">
235
+
236
+ <label for="first_name">First Name</label>
237
+ <input type="text" name="first_name" required />
238
+
239
+ <label for="parent[child]">Nested Field</label>
240
+ <input type="text" name="parent[child]" required />
241
+
242
+ <input type="submit" value="Apply" />
243
+ </form>
244
+ EOS
245
+ end
246
+
247
+ subject(:valid) { Formulary::HtmlForm.new(markup).valid?(params) }
248
+
249
+ context "with valid nested parameters" do
250
+ let(:params) do
251
+ { "first_name" => "Test", "parent" => { "child" => "nested value" } }
252
+ end
253
+
254
+ it { should be_true }
255
+ end
256
+
257
+ context "with invalid nested parameters" do
258
+ let(:params) { { "parent" => { "invalid" => "bad" } } }
123
259
 
124
- its(["first_name"]) { should include("required") }
125
- its(["email"]) { should include("email") }
126
- its(["g5_email"]) { should include("format") }
127
- its(["foods"]) { should include("choose") }
260
+ it " explodes violently" do
261
+ expect { valid }.to raise_error(Formulary::UnexpectedParameter, /invalid/)
128
262
  end
129
263
  end
130
264
  end
@@ -6,7 +6,7 @@ module ElementHelper
6
6
  def elements
7
7
  @elements ||= \
8
8
  Nokogiri::HTML("<html><body>#{markup}</body></html>").
9
- css("body > *")
9
+ css("body input, body textarea, body select")
10
10
  end
11
11
  end
12
12
 
@@ -1,5 +1,7 @@
1
1
  shared_examples_for "a field that allows the pattern attribute" do
2
- subject(:input) { described_class.new(element) }
2
+ let(:markup_with_label) { "<label for='field'>Field</label>#{markup}" }
3
+ let(:html_form) { Formulary::HtmlForm.new(markup_with_label) }
4
+ subject(:input) { described_class.new(html_form, element) }
3
5
 
4
6
  context "with a matching value" do
5
7
  before { input.set_value(valid_value) }
@@ -10,6 +12,6 @@ shared_examples_for "a field that allows the pattern attribute" do
10
12
  context "without a matching value" do
11
13
  before { input.set_value("z") }
12
14
  it { should_not be_valid }
13
- its(:error) { should include("format") }
15
+ its(:error) { should include("'Field' does not match the expected format") }
14
16
  end
15
17
  end
@@ -1,5 +1,7 @@
1
1
  shared_examples_for "a field that allows the required attribute" do
2
- subject(:input) { described_class.new(element) }
2
+ let(:markup_with_label) { "<label for='field'>Field</label>#{markup}" }
3
+ let(:html_form) { Formulary::HtmlForm.new(markup_with_label) }
4
+ subject(:input) { described_class.new(html_form, element) }
3
5
 
4
6
  context "required" do
5
7
  let(:markup) { markup_with_required }
@@ -19,7 +21,7 @@ shared_examples_for "a field that allows the required attribute" do
19
21
  context "submitted a nil value" do
20
22
  before { input.set_value(nil) }
21
23
  it { should_not be_valid }
22
- its(:error) { should include("required") }
24
+ its(:error) { should eql("'Field' is required") }
23
25
  end
24
26
  end
25
27
 
metadata CHANGED
@@ -1,121 +1,110 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: formulary
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 2
9
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
10
5
  platform: ruby
11
- authors:
6
+ authors:
12
7
  - Matt Bohme
13
8
  - Don Petersen
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2014-01-10 00:00:00 -08:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2014-03-27 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: nokogiri
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- requirements:
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
26
18
  - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- version: "0"
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
31
21
  type: :runtime
32
- version_requirements: *id001
33
- - !ruby/object:Gem::Dependency
34
- name: activesupport
35
22
  prerelease: false
36
- requirement: &id002 !ruby/object:Gem::Requirement
37
- requirements:
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: activesupport
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
38
32
  - - ">="
39
- - !ruby/object:Gem::Version
40
- segments:
41
- - 0
42
- version: "0"
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
43
35
  type: :runtime
44
- version_requirements: *id002
45
- - !ruby/object:Gem::Dependency
46
- name: email_veracity
47
36
  prerelease: false
48
- requirement: &id003 !ruby/object:Gem::Requirement
49
- requirements:
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
50
39
  - - ">="
51
- - !ruby/object:Gem::Version
52
- segments:
53
- - 0
54
- version: "0"
55
- type: :runtime
56
- version_requirements: *id003
57
- - !ruby/object:Gem::Dependency
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
58
43
  name: bundler
59
- prerelease: false
60
- requirement: &id004 !ruby/object:Gem::Requirement
61
- requirements:
62
- - - ~>
63
- - !ruby/object:Gem::Version
64
- segments:
65
- - 1
66
- - 3
67
- version: "1.3"
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '1.3'
68
49
  type: :development
69
- version_requirements: *id004
70
- - !ruby/object:Gem::Dependency
71
- name: rake
72
50
  prerelease: false
73
- requirement: &id005 !ruby/object:Gem::Requirement
74
- requirements:
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '1.3'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rake
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
75
60
  - - ">="
76
- - !ruby/object:Gem::Version
77
- segments:
78
- - 0
79
- version: "0"
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
80
63
  type: :development
81
- version_requirements: *id005
82
- - !ruby/object:Gem::Dependency
83
- name: rspec
84
64
  prerelease: false
85
- requirement: &id006 !ruby/object:Gem::Requirement
86
- requirements:
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rspec
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
87
74
  - - ">="
88
- - !ruby/object:Gem::Version
89
- segments:
90
- - 0
91
- version: "0"
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
92
77
  type: :development
93
- version_requirements: *id006
94
- - !ruby/object:Gem::Dependency
95
- name: pry
96
78
  prerelease: false
97
- requirement: &id007 !ruby/object:Gem::Requirement
98
- requirements:
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
99
81
  - - ">="
100
- - !ruby/object:Gem::Version
101
- segments:
102
- - 0
103
- version: "0"
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: pry
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
104
91
  type: :development
105
- version_requirements: *id007
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
106
98
  description: Valid form submission based on the HTML5 validation on the form itself
107
- email:
99
+ email:
108
100
  - matt.bohme@g5searchmarketing.com
109
101
  - don.petersen@g5searchmarketing.com
110
102
  executables: []
111
-
112
103
  extensions: []
113
-
114
104
  extra_rdoc_files: []
115
-
116
- files:
117
- - .gitignore
118
- - .rspec
105
+ files:
106
+ - ".gitignore"
107
+ - ".rspec"
119
108
  - Gemfile
120
109
  - LICENSE.txt
121
110
  - README.md
@@ -125,73 +114,92 @@ files:
125
114
  - lib/formulary/html_form.rb
126
115
  - lib/formulary/html_form/fields.rb
127
116
  - lib/formulary/html_form/fields/checkbox_group.rb
117
+ - lib/formulary/html_form/fields/color_input.rb
118
+ - lib/formulary/html_form/fields/date_input.rb
128
119
  - lib/formulary/html_form/fields/email_input.rb
129
120
  - lib/formulary/html_form/fields/field.rb
130
121
  - lib/formulary/html_form/fields/field_group.rb
131
122
  - lib/formulary/html_form/fields/hidden_input.rb
132
123
  - lib/formulary/html_form/fields/input.rb
124
+ - lib/formulary/html_form/fields/month_input.rb
125
+ - lib/formulary/html_form/fields/number_input.rb
126
+ - lib/formulary/html_form/fields/password_input.rb
133
127
  - lib/formulary/html_form/fields/radio_button_group.rb
128
+ - lib/formulary/html_form/fields/range_input.rb
129
+ - lib/formulary/html_form/fields/search_input.rb
134
130
  - lib/formulary/html_form/fields/select.rb
135
131
  - lib/formulary/html_form/fields/tel_input.rb
136
132
  - lib/formulary/html_form/fields/text_input.rb
137
133
  - lib/formulary/html_form/fields/textarea.rb
134
+ - lib/formulary/html_form/fields/week_input.rb
135
+ - lib/formulary/html_form/labels.rb
138
136
  - lib/formulary/version.rb
139
137
  - spec/html_form/fields/checkbox_group_spec.rb
138
+ - spec/html_form/fields/color_input_spec.rb
139
+ - spec/html_form/fields/date_input_spec.rb
140
140
  - spec/html_form/fields/email_input_spec.rb
141
141
  - spec/html_form/fields/field_spec.rb
142
142
  - spec/html_form/fields/hidden_input_spec.rb
143
143
  - spec/html_form/fields/input_spec.rb
144
+ - spec/html_form/fields/month_input_spec.rb
145
+ - spec/html_form/fields/number_input_spec.rb
146
+ - spec/html_form/fields/password_input_spec.rb
144
147
  - spec/html_form/fields/radio_button_group_spec.rb
148
+ - spec/html_form/fields/range_input_spec.rb
149
+ - spec/html_form/fields/search_input_spec.rb
145
150
  - spec/html_form/fields/select_spec.rb
146
151
  - spec/html_form/fields/tel_input_spec.rb
147
152
  - spec/html_form/fields/text_input_spec.rb
148
153
  - spec/html_form/fields/textarea_spec.rb
154
+ - spec/html_form/fields/week_input_spec.rb
149
155
  - spec/html_form_spec.rb
150
156
  - spec/spec_helper.rb
151
157
  - spec/support/element_helper.rb
152
158
  - spec/support/shared_examples_for_pattern.rb
153
159
  - spec/support/shared_examples_for_required.rb
154
- has_rdoc: true
155
160
  homepage: http://github.com/g5/formulary
156
- licenses:
161
+ licenses:
157
162
  - MIT
163
+ metadata: {}
158
164
  post_install_message:
159
165
  rdoc_options: []
160
-
161
- require_paths:
166
+ require_paths:
162
167
  - lib
163
- required_ruby_version: !ruby/object:Gem::Requirement
164
- requirements:
168
+ required_ruby_version: !ruby/object:Gem::Requirement
169
+ requirements:
165
170
  - - ">="
166
- - !ruby/object:Gem::Version
167
- segments:
168
- - 0
169
- version: "0"
170
- required_rubygems_version: !ruby/object:Gem::Requirement
171
- requirements:
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ required_rubygems_version: !ruby/object:Gem::Requirement
174
+ requirements:
172
175
  - - ">="
173
- - !ruby/object:Gem::Version
174
- segments:
175
- - 0
176
- version: "0"
176
+ - !ruby/object:Gem::Version
177
+ version: '0'
177
178
  requirements: []
178
-
179
179
  rubyforge_project:
180
- rubygems_version: 1.3.6
180
+ rubygems_version: 2.2.0
181
181
  signing_key:
182
- specification_version: 3
182
+ specification_version: 4
183
183
  summary: Valid form submission based on the HTML5 validation on the form itself
184
- test_files:
184
+ test_files:
185
185
  - spec/html_form/fields/checkbox_group_spec.rb
186
+ - spec/html_form/fields/color_input_spec.rb
187
+ - spec/html_form/fields/date_input_spec.rb
186
188
  - spec/html_form/fields/email_input_spec.rb
187
189
  - spec/html_form/fields/field_spec.rb
188
190
  - spec/html_form/fields/hidden_input_spec.rb
189
191
  - spec/html_form/fields/input_spec.rb
192
+ - spec/html_form/fields/month_input_spec.rb
193
+ - spec/html_form/fields/number_input_spec.rb
194
+ - spec/html_form/fields/password_input_spec.rb
190
195
  - spec/html_form/fields/radio_button_group_spec.rb
196
+ - spec/html_form/fields/range_input_spec.rb
197
+ - spec/html_form/fields/search_input_spec.rb
191
198
  - spec/html_form/fields/select_spec.rb
192
199
  - spec/html_form/fields/tel_input_spec.rb
193
200
  - spec/html_form/fields/text_input_spec.rb
194
201
  - spec/html_form/fields/textarea_spec.rb
202
+ - spec/html_form/fields/week_input_spec.rb
195
203
  - spec/html_form_spec.rb
196
204
  - spec/spec_helper.rb
197
205
  - spec/support/element_helper.rb