sinatra-formkeeper 0.0.2 → 0.0.3
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/Gemfile +1 -1
- data/README.md +144 -3
- data/lib/sinatra/formkeeper/version.rb +1 -1
- metadata +2 -2
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -66,6 +66,118 @@ Calling 'form' with block which includes rule-setting,
|
|
66
66
|
you can build a form-rule.
|
67
67
|
There are some DSL-method to build rules. In this example, 'filters' and 'field' are written.
|
68
68
|
|
69
|
+
#### filters
|
70
|
+
|
71
|
+
You can set 'filters'. All input parameters are filtered by indicated filtering feature
|
72
|
+
The filtering process is executed before validation.
|
73
|
+
|
74
|
+
form do
|
75
|
+
filters :strip
|
76
|
+
...
|
77
|
+
end
|
78
|
+
|
79
|
+
You can set multiple filters at once
|
80
|
+
|
81
|
+
form do
|
82
|
+
filters :strip, :downcase
|
83
|
+
...
|
84
|
+
end
|
85
|
+
|
86
|
+
All preset filters are described at [8: Preset Filters]
|
87
|
+
|
88
|
+
#### field
|
89
|
+
|
90
|
+
You can add a setting for each field
|
91
|
+
|
92
|
+
form do
|
93
|
+
field :field_name, :present => true, length => 0..10
|
94
|
+
...
|
95
|
+
end
|
96
|
+
|
97
|
+
This constraint works for an input form named as "field_name", for instance
|
98
|
+
|
99
|
+
<input type="text" name="field_name" />
|
100
|
+
|
101
|
+
And key-value pares are following the field name.
|
102
|
+
They are constraints set for the field.
|
103
|
+
You can add your favorite constraints here.
|
104
|
+
|
105
|
+
All preset constraints are described at [9: Preset Constraints]
|
106
|
+
Read the chapter for more detail.
|
107
|
+
|
108
|
+
And you can set filters here,
|
109
|
+
if you don't want to filter all the parameters included in the request.
|
110
|
+
This filtering setting only affets on :field_name.
|
111
|
+
|
112
|
+
form do
|
113
|
+
field :field_name, :present => true, filters => [:strip, :downcase]
|
114
|
+
...
|
115
|
+
end
|
116
|
+
|
117
|
+
You can set as just one single symbol, if you don't need multiple filters.
|
118
|
+
|
119
|
+
form do
|
120
|
+
field :field_name, :present => true, filters => :strip
|
121
|
+
...
|
122
|
+
end
|
123
|
+
|
124
|
+
#### checkbox
|
125
|
+
|
126
|
+
You also can set the rule like this.
|
127
|
+
|
128
|
+
form do
|
129
|
+
checkbox :field_name, :count => 1..3, int => true
|
130
|
+
...
|
131
|
+
end
|
132
|
+
|
133
|
+
This is just for field which has multiple values.
|
134
|
+
For instance,
|
135
|
+
|
136
|
+
<input type="checkbox" name="field_name[]" value="1" checked>
|
137
|
+
<label>check1</label>
|
138
|
+
<input type="checkbox" name="field_name[]" value="2" checked>
|
139
|
+
<label>check2</label>
|
140
|
+
<input type="checkbox" name="field_name[]" value="3" checked>
|
141
|
+
<label>check3</label>
|
142
|
+
|
143
|
+
Or
|
144
|
+
|
145
|
+
<select name="favorite[]" multiple>
|
146
|
+
<option value="1" selected="selected">white</option>
|
147
|
+
<option value="2">black</option>
|
148
|
+
<option value="3">blue</option>
|
149
|
+
</select>
|
150
|
+
|
151
|
+
Rack request handle such type of name (exp: field_name[]) as Array.
|
152
|
+
For this type of input, use 'checkbox' method.
|
153
|
+
In this case, you must use :count constraints instead of :present.
|
154
|
+
|
155
|
+
#### combination
|
156
|
+
|
157
|
+
There is another special rule, 'Combination'
|
158
|
+
|
159
|
+
form do
|
160
|
+
combination :same_address, :fields => ["email01", "email02"], :same => true
|
161
|
+
combination :favorite_color, :fields => ["white", "black", "blue"], :any => true
|
162
|
+
end
|
163
|
+
|
164
|
+
Set rule-name as a first argument.
|
165
|
+
And you should set multiple target fields.
|
166
|
+
And one constraint like (:same => true), or (:any => true).
|
167
|
+
|
168
|
+
:same and :any are called as 'Combination Constraint'
|
169
|
+
For this purpose, formkeeper provides you a simple way to do same things.
|
170
|
+
|
171
|
+
form do
|
172
|
+
same :same_address, ["email01", "email02"]
|
173
|
+
any :favorite_color, ["white", "black", "blue"]
|
174
|
+
end
|
175
|
+
|
176
|
+
You can call a name of 'Combination Constraints' as a method.
|
177
|
+
Followed by rule-name and target-fields.
|
178
|
+
|
179
|
+
All preset constraints are described at [10: Preset Combination Constraints]
|
180
|
+
|
69
181
|
### 2: Check if user's input is valid or not
|
70
182
|
|
71
183
|
'form.failed?' can be used to judge if user's input is valid for the rule you build.
|
@@ -262,7 +374,36 @@ If you want to show messages for each field, separately, of course you can.
|
|
262
374
|
</body>
|
263
375
|
</html>
|
264
376
|
|
265
|
-
### 8:
|
377
|
+
### 8: Preset Filters
|
378
|
+
|
379
|
+
#### strip
|
380
|
+
#### downcase
|
381
|
+
#### upcase
|
382
|
+
|
383
|
+
### 9: Preset Constraints
|
384
|
+
|
385
|
+
#### present
|
386
|
+
#### length
|
387
|
+
#### bytesize
|
388
|
+
#### ascii
|
389
|
+
#### regexp
|
390
|
+
#### int
|
391
|
+
#### uint
|
392
|
+
#### alpha
|
393
|
+
#### alpha_space
|
394
|
+
#### alnum
|
395
|
+
#### alnum_space
|
396
|
+
#### uri
|
397
|
+
|
398
|
+
### 10: Preset Combination Constraints
|
399
|
+
|
400
|
+
#### same
|
401
|
+
#### any
|
402
|
+
#### date
|
403
|
+
#### time
|
404
|
+
#### datetime
|
405
|
+
|
406
|
+
### 11: Utilize Plugins
|
266
407
|
|
267
408
|
require 'formkeeper/japanese'
|
268
409
|
|
@@ -272,7 +413,7 @@ If you want to show messages for each field, separately, of course you can.
|
|
272
413
|
end
|
273
414
|
end
|
274
415
|
|
275
|
-
###
|
416
|
+
### 12: Custom Filter
|
276
417
|
|
277
418
|
form_filter :my_capitalize_filter do |value|
|
278
419
|
value.capitalize
|
@@ -285,7 +426,7 @@ If you want to show messages for each field, separately, of course you can.
|
|
285
426
|
end
|
286
427
|
|
287
428
|
|
288
|
-
###
|
429
|
+
### 13: Custom Constraint
|
289
430
|
|
290
431
|
## See Also
|
291
432
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sinatra-formkeeper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-24 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Sinatra extension which handles stuff around HTML forms
|
15
15
|
email:
|