sinatra-formhelpers-ng 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -22,7 +22,7 @@ Usage
22
22
  -----
23
23
  With Bundler/Isolate:
24
24
 
25
- gem 'sinatra-formhelpers', '~>0.6.0'
25
+ gem 'sinatra-formhelpers-ng'
26
26
 
27
27
  Then, include it in a Sinatra application:
28
28
 
@@ -83,10 +83,16 @@ This will create fields named <code>user[first\_name]</code>, <code>user[last\_n
83
83
 
84
84
  Known Bugs
85
85
  ----------
86
- * Currently <code>fieldset</code> does not return a <fieldset> tag properly (working on it)
86
+ * Currently <code>fieldset</code> does not return a <fieldset> tag properly.
87
87
 
88
88
 
89
- Author
90
- * Initial efforts (c) 2009 twilson63.
91
- * Additional efforts (c) 2011 [Nate Wiger](http://nateware.com).
89
+ Fixed Bugs
90
+ ----------
91
+ * The state of select tags was not persisted across form submissions.
92
+
93
+
94
+ Authors
95
+ -------
96
+ * [Initial efforts](https://github.com/twilson63/sinatra-formhelpers) (c) 2009 [Tom Wilson](https://github.com/twilson63).
97
+ * [Additional efforts](https://github.com/nateware/sinatra-formhelpers) (c) 2011 [Nate Wiger](http://nateware.com).
92
98
  * Further efforts (c) 2013 [Cymen Vig](http://blog.cymen.org/).
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.5.0
1
+ 1.6.0
@@ -3,13 +3,13 @@ module Sinatra
3
3
  # FormHelpers are a suite of helper methods
4
4
  # built to make building forms in Sinatra
5
5
  # a breeze.
6
- #
6
+ #
7
7
  # link "jackhq", "http://www.jackhq.com"
8
- #
8
+ #
9
9
  # label :person, :first_name
10
10
  # input :person, :first_name
11
11
  # textarea :person, :notes
12
- #
12
+ #
13
13
  # etc.
14
14
  def form(action, method=:get, options={}, &block)
15
15
  method_input = ''
@@ -34,10 +34,10 @@ module Sinatra
34
34
  out = yield Fieldset.new(self, obj)
35
35
  '<fieldset>' + (legend.nil? ? '' : "<legend>#{fast_escape_html(legend)}</legend>") + out + '</fieldset>'
36
36
  end
37
-
37
+
38
38
  # Link to a URL
39
39
  def link(content, href=content, options={})
40
- tag :a, content, options.merge(:href => href)
40
+ tag :a, content, options.merge(:href => href)
41
41
  end
42
42
 
43
43
  # Link to an image
@@ -54,7 +54,8 @@ module Sinatra
54
54
  def input(obj, field=nil, options={})
55
55
  value = param_or_default(obj, field, options[:value])
56
56
  single_tag :input, options.merge(
57
- :type => "text", :id => css_id(obj, field),
57
+ :type => options[:type] || "text",
58
+ :id => css_id(obj, field),
58
59
  :name => field.nil? ? obj : "#{obj}[#{field}]",
59
60
  :value => value
60
61
  )
@@ -62,12 +63,7 @@ module Sinatra
62
63
 
63
64
  # Form password input. Specify the value as :value => 'foo'
64
65
  def password(obj, field=nil, options={})
65
- value = param_or_default(obj, field, options[:value])
66
- single_tag :input, options.merge(
67
- :type => "password", :id => css_id(obj, field),
68
- :name => field.nil? ? obj : "#{obj}[#{field}]",
69
- :value => value
70
- )
66
+ input(obj, field, options.merge(:type => 'password'))
71
67
  end
72
68
 
73
69
  # Form textarea box.
@@ -111,10 +107,10 @@ module Sinatra
111
107
  (labs.nil? || labs == true ? label(obj, "#{field}_#{id.to_s.downcase}", text) : '')
112
108
  end.join(join)
113
109
  end
114
-
110
+
115
111
  # Form radio input. Specify an array of values to get a radio group.
116
112
  def radio(obj, field, values, options={})
117
- #content = @params[obj] && @params[obj][field.to_s] == value ? "true" : ""
113
+ #content = @params[obj] && @params[obj][field.to_s] == value ? "true" : ""
118
114
  # , :checked => content
119
115
  join = options.delete(:join) || ' '
120
116
  labs = options.delete(:label)
@@ -140,33 +136,32 @@ module Sinatra
140
136
  end
141
137
  tag :select, content, options.merge(:id => css_id(obj, field), :name => "#{obj}[#{field}]")
142
138
  end
143
-
139
+
144
140
  # Form hidden input. Specify value as :value => 'foo'
145
- def hidden(obj, field="", options={})
146
- content = param_or_default(obj, field, options[:value])
147
- single_tag :input, options.merge(:type => "hidden", :id => css_id(obj, field), :name => "#{obj}[#{field}]")
141
+ def hidden(obj, field = nil, options = {})
142
+ input(obj, field, options.merge(:type => 'hidden'))
148
143
  end
149
-
144
+
150
145
  # Standard open and close tags
151
146
  # EX : tag :h1, "shizam", :title => "shizam"
152
147
  # => <h1 title="shizam">shizam</h1>
153
148
  def tag(name, content, options={})
154
149
  "<#{name.to_s}" +
155
- (options.length > 0 ? " #{hash_to_html_attrs(options)}" : '') +
150
+ (options.length > 0 ? " #{hash_to_html_attrs(options)}" : '') +
156
151
  (content.nil? ? '>' : ">#{content}</#{name}>")
157
152
  end
158
-
153
+
159
154
  # Standard single closing tags
160
155
  # single_tag :img, :src => "images/google.jpg"
161
156
  # => <img src="images/google.jpg" />
162
157
  def single_tag(name, options={})
163
158
  "<#{name.to_s} #{hash_to_html_attrs(options)} />"
164
159
  end
165
-
160
+
166
161
  def fast_escape_html(text)
167
162
  text.to_s.gsub(/\&/,'&amp;').gsub(/\"/,'&quot;').gsub(/>/,'&gt;').gsub(/</,'&lt;')
168
163
  end
169
-
164
+
170
165
  def titleize(text)
171
166
  text.to_s.gsub(/_+/, ' ').gsub(/\b('?[a-z])/) { $1.capitalize }
172
167
  end
@@ -195,7 +190,7 @@ module Sinatra
195
190
  [val, val]
196
191
  end
197
192
  end
198
-
193
+
199
194
  def css_id(*things)
200
195
  things.compact.map{|t| t.to_s}.join('_').downcase.gsub(/\W/,'_')
201
196
  end
@@ -4,14 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = "sinatra-formhelpers"
8
- s.version = "0.5.0"
7
+ s.name = "sinatra-formhelpers-ng"
8
+ s.version = "1.6.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Nate Wiger", "Cymen Vig"]
12
- s.date = "2013-03-28"
13
- s.description = "Simple, lightweight form helpers for Sinatra. Based on initial efforts by twilson63."
14
- s.email = "nate@wiger.org"
11
+ s.authors = ["twilson63", "Nate Wiger", "Cymen Vig"]
12
+ s.date = "2013-05-03"
13
+ s.description = "Simple, lightweight form helpers for Sinatra."
14
+ s.email = "cymenvig@gmail.com"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
17
  "README.md"
@@ -25,11 +25,11 @@ Gem::Specification.new do |s|
25
25
  "Rakefile",
26
26
  "VERSION",
27
27
  "lib/sinatra/form_helpers.rb",
28
- "sinatra-formhelpers.gemspec",
28
+ "sinatra-formhelpers-ng.gemspec",
29
29
  "spec/form_helpers_spec.rb",
30
30
  "spec/spec_helper.rb"
31
31
  ]
32
- s.homepage = "http://github.com/nateware/sinatra-formhelpers"
32
+ s.homepage = "http://github.com/cymen/sinatra-formhelpers"
33
33
  s.require_paths = ["lib"]
34
34
  s.rubygems_version = "1.8.25"
35
35
  s.summary = "Form helpers for Sinatra"
@@ -2,15 +2,15 @@ require File.expand_path 'spec_helper', File.dirname(__FILE__)
2
2
 
3
3
  # class Application < Sinatra::Base
4
4
  # register Sinatra::FormHelpers
5
- #
5
+ #
6
6
  # set :raise_errors, false
7
7
  # set :show_exceptions, false
8
- #
8
+ #
9
9
  # get '/link' do
10
- #
10
+ #
11
11
  # end
12
12
  # end
13
- #
13
+ #
14
14
  # class Bacon::Context
15
15
  # include Rack::Test::Methods
16
16
  # def app
@@ -38,7 +38,7 @@ describe "Sinatra::FormHelpers methods" do
38
38
  fh.form(:person, :create) do |f|
39
39
  # f.input(:first_name)
40
40
  f.input(:last_name)
41
- end.should == '<form action="/person" method="POST"><fieldset>' +
41
+ end.should == '<form action="/person" method="POST"><fieldset>' +
42
42
  # '<input id="person_first_name" name="person[first_name]" type="text" />' +
43
43
  '<input id="person_last_name" name="person[last_name]" type="text" />' +
44
44
  '</fieldset></form>'
@@ -83,7 +83,7 @@ describe "Sinatra::FormHelpers methods" do
83
83
  end
84
84
  it 'supports multiple values for checkboxes' do
85
85
  fh.params = {:user => {'devices' => ['iPhone', 'iPad'] }}
86
- fh.checkbox(:user, :devices, ['iPhone', 'iPad', 'iPod', 'iPoop']).should ==
86
+ fh.checkbox(:user, :devices, ['iPhone', 'iPad', 'iPod', 'iPoop']).should ==
87
87
  "<input checked=\"checked\" id=\"user_devices_iphone\" name=\"user[devices][]\" type=\"checkbox\" value=\"iPhone\" /><label for=\"user_devices_iphone\">iPhone</label> <input checked=\"checked\" id=\"user_devices_ipad\" name=\"user[devices][]\" type=\"checkbox\" value=\"iPad\" /><label for=\"user_devices_ipad\">iPad</label> <input id=\"user_devices_ipod\" name=\"user[devices][]\" type=\"checkbox\" value=\"iPod\" /><label for=\"user_devices_ipod\">iPod</label> <input id=\"user_devices_ipoop\" name=\"user[devices][]\" type=\"checkbox\" value=\"iPoop\" /><label for=\"user_devices_ipoop\">iPoop</label>"
88
88
  end
89
89
  end
@@ -102,7 +102,7 @@ describe "Sinatra::FormHelpers in app" do
102
102
  app.get '/label' do
103
103
  erb "<%= label :person, :first_name %>"
104
104
  end
105
-
105
+
106
106
  get '/label'
107
107
  last_response.body.should == %q(<label for="person_first_name">First Name</label>)
108
108
  end
@@ -111,11 +111,11 @@ describe "Sinatra::FormHelpers in app" do
111
111
  app.get '/hello' do
112
112
  erb "<%= label :person, :first_name, 'Hello World'%>"
113
113
  end
114
-
114
+
115
115
  get '/hello'
116
116
  last_response.body.should == %q(<label for="person_first_name">Hello World</label>)
117
117
  end
118
-
118
+
119
119
  it 'renders an input tag type text without @params' do
120
120
  app.get '/text' do
121
121
  erb "<%= input :person, :first_name %>"
@@ -126,34 +126,61 @@ describe "Sinatra::FormHelpers in app" do
126
126
  last_response.body.should == %q(<input id="person_first_name" name="person[first_name]" type="text" />)
127
127
  end
128
128
 
129
+ it 'accepts an input tag with custom type option' do
130
+ app.get '/input-with-custom-type' do
131
+ erb "<%= input :person, :password, type: 'password' %>"
132
+ end
133
+
134
+ get '/input-with-custom-type'
135
+ last_response.body.should == '<input id="person_password" name="person[password]" type="password" />'
136
+ end
137
+
129
138
  it 'renders an input tag type text with single arg' do
130
139
  app.get '/q' do
131
140
  erb "<%= input :q %>"
132
141
  end
133
-
142
+
134
143
  get '/q'
135
144
  last_response.body.should == %q(<input id="q" name="q" type="text" />)
136
145
  end
137
-
146
+
138
147
  it 'renders an input tag type text with @params' do
139
148
  app.get '/tom' do
140
149
  @params = { :person => {"first_name" => "Tom"}}
141
150
  erb "<%= input :person, :first_name %>"
142
151
  end
143
-
152
+
144
153
  get '/tom'
145
154
  last_response.body.should == %q(<input id="person_first_name" name="person[first_name]" type="text" value="Tom" />)
146
155
  end
147
-
156
+
157
+ it 'renders a password tag type password' do
158
+ app.get '/password' do
159
+ erb "<%= password :person, :password %>"
160
+ end
161
+
162
+ get '/password'
163
+ last_response.body.should == '<input id="person_password" name="person[password]" type="password" />'
164
+ end
165
+
166
+ it 'renders a button tag type button' do
167
+ app.get '/button' do
168
+ erb "<%= button :new %>"
169
+ end
170
+
171
+ get '/button'
172
+ last_response.body.should == '<input id="button_new" name="button" type="button" value="new" />'
173
+ end
174
+
148
175
  it 'renders an textarea tag type text without @params' do
149
176
  app.get '/notes' do
150
177
  erb "<%= textarea :person, :notes %>"
151
178
  end
152
-
179
+
153
180
  get '/notes?person[notes]=Yeppers'
154
181
  last_response.body.should == %q(<textarea id="person_notes" name="person[notes]">Yeppers</textarea>)
155
182
  end
156
-
183
+
157
184
  it 'renders a textarea tag with @params' do
158
185
  app.get '/notes2' do
159
186
  @params = { :person => {"notes" => "This is a note"}}
@@ -163,12 +190,12 @@ describe "Sinatra::FormHelpers in app" do
163
190
  get '/notes2'
164
191
  last_response.body.should == %q(<textarea id="person_notes" name="person[notes]">This is a note</textarea>)
165
192
  end
166
-
193
+
167
194
  it 'renders a textarea tag with @params' do
168
195
  app.get '/img' do
169
196
  erb "<%= image '/images/hello.png', :alt => 'Lolcatz' %>"
170
197
  end
171
-
198
+
172
199
  get '/img'
173
200
  last_response.body.should == '<img alt="Lolcatz" src="/images/hello.png" />'
174
201
  end
@@ -177,25 +204,25 @@ describe "Sinatra::FormHelpers in app" do
177
204
  app.get '/sub' do
178
205
  erb "<%= submit 'Create' %>"
179
206
  end
180
-
207
+
181
208
  get '/sub'
182
209
  last_response.body.should == '<input id="button_create" name="submit" type="submit" value="Create" />'
183
210
  end
184
-
211
+
185
212
  it 'renders an input tag with a submit type with zero args' do
186
213
  app.get '/create' do
187
214
  erb "<%= submit %>"
188
215
  end
189
-
216
+
190
217
  get '/create'
191
218
  last_response.body.should == '<input id="button_submit" name="submit" type="submit" value="Submit" />'
192
219
  end
193
-
220
+
194
221
  it 'renders an input tag with a checkbox type' do
195
222
  app.get '/check' do
196
223
  erb "<%= checkbox :person, :active, 'Yes' %>"
197
224
  end
198
-
225
+
199
226
  get '/check'
200
227
  last_response.body.should ==
201
228
  '<input id="person_active_yes" name="person[active]" type="checkbox" value="Yes" /><label for="person_active_yes">Yes</label>'
@@ -229,39 +256,48 @@ describe "Sinatra::FormHelpers in app" do
229
256
  app.get '/select' do
230
257
  erb "<%= select :person, :relationship, ['Friend','CoWorker','Lead'] %>"
231
258
  end
232
-
259
+
233
260
  get '/select'
234
261
  last_response.body.should == '<select id="person_relationship" name="person[relationship]">' +
235
- '<option value="Friend">Friend</option><option value="CoWorker">CoWorker</option>' +
262
+ '<option value="Friend">Friend</option><option value="CoWorker">CoWorker</option>' +
236
263
  '<option value="Lead">Lead</option></select>'
237
264
  end
238
-
265
+
239
266
  it 'renders a select tag with selected option' do
240
267
  app.get '/select2' do
241
268
  @params = { :person => {"relationship" => "CoWorker"}}
242
269
  erb "<%= select :person, :relationship, ['Friend','CoWorker','Lead'] %>"
243
270
  end
244
-
271
+
245
272
  get '/select2'
246
273
  last_response.body.should == '<select id="person_relationship" name="person[relationship]">' +
247
- '<option value="Friend">Friend</option><option selected="selected" value="CoWorker">CoWorker</option>' +
274
+ '<option value="Friend">Friend</option><option selected="selected" value="CoWorker">CoWorker</option>' +
248
275
  '<option value="Lead">Lead</option></select>'
249
276
  end
250
-
277
+
278
+ it 'renders a hidden tag with single arg' do
279
+ app.get '/hidden' do
280
+ erb "<%= hidden :q %>"
281
+ end
282
+
283
+ get '/hidden'
284
+ last_response.body.should == %q(<input id="q" name="q" type="hidden" />)
285
+ end
286
+
251
287
  it 'renders a hidden tag with value' do
252
- app.get '/hidden' do
288
+ app.get '/hidden2' do
253
289
  erb '<%= hidden :person, :id, :value => 1 %>'
254
290
  end
255
-
256
- get '/hidden'
291
+
292
+ get '/hidden2'
257
293
  last_response.body.should == '<input id="person_id" name="person[id]" type="hidden" value="1" />'
258
294
  end
259
-
295
+
260
296
  it 'renders a form tag' do
261
297
  app.get '/form' do
262
298
  erb "<%= form :person, :create %>"
263
299
  end
264
-
300
+
265
301
  get '/form'
266
302
  last_response.body.should == %q(<form action="/person" method="POST">)
267
303
  end
@@ -276,7 +312,7 @@ describe "Sinatra::FormHelpers in app" do
276
312
  # <% end %>
277
313
  # EndTemplate
278
314
  # end
279
- #
315
+ #
280
316
  # get '/form_for'
281
317
  # last_response.body.should == %q(<form action="/person" method="POST">)
282
318
  # end
data/spec/spec_helper.rb CHANGED
@@ -37,11 +37,11 @@ end
37
37
  # @app ||= Class.new Sinatra::Base
38
38
  # Rack::Lint.new @app
39
39
  # end
40
- #
40
+ #
41
41
  # def app=(base)
42
42
  # @app = base
43
43
  # end
44
- #
44
+ #
45
45
  # def mock_app(base = Sinatra::Base, &block)
46
46
  # inner = nil
47
47
  # @app = Sinatra.new(base) do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-formhelpers-ng
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-04-12 00:00:00.000000000 Z
14
+ date: 2013-05-03 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bacon
@@ -77,7 +77,7 @@ files:
77
77
  - Rakefile
78
78
  - VERSION
79
79
  - lib/sinatra/form_helpers.rb
80
- - sinatra-formhelpers.gemspec
80
+ - sinatra-formhelpers-ng.gemspec
81
81
  - spec/form_helpers_spec.rb
82
82
  - spec/spec_helper.rb
83
83
  homepage: http://github.com/cymen/sinatra-formhelpers
@@ -94,7 +94,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
94
94
  version: '0'
95
95
  segments:
96
96
  - 0
97
- hash: 3413029365659402613
97
+ hash: 1135526224546882131
98
98
  required_rubygems_version: !ruby/object:Gem::Requirement
99
99
  none: false
100
100
  requirements: