form_input 0.9.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +5 -0
  3. data/LICENSE +19 -0
  4. data/README.md +3160 -0
  5. data/Rakefile +19 -0
  6. data/example/controllers/ramaze/press_release.rb +104 -0
  7. data/example/controllers/ramaze/profile.rb +38 -0
  8. data/example/controllers/sinatra/press_release.rb +114 -0
  9. data/example/controllers/sinatra/profile.rb +39 -0
  10. data/example/forms/change_password_form.rb +17 -0
  11. data/example/forms/login_form.rb +14 -0
  12. data/example/forms/lost_password_form.rb +14 -0
  13. data/example/forms/new_password_form.rb +15 -0
  14. data/example/forms/password_form.rb +18 -0
  15. data/example/forms/press_release_form.rb +153 -0
  16. data/example/forms/profile_form.rb +21 -0
  17. data/example/forms/signup_form.rb +25 -0
  18. data/example/views/press_release.slim +65 -0
  19. data/example/views/profile.slim +28 -0
  20. data/example/views/snippets/form_block.slim +27 -0
  21. data/example/views/snippets/form_chunked.slim +25 -0
  22. data/example/views/snippets/form_hidden.slim +21 -0
  23. data/example/views/snippets/form_panel.slim +89 -0
  24. data/form_input.gemspec +32 -0
  25. data/lib/form_input/core.rb +1165 -0
  26. data/lib/form_input/localize.rb +49 -0
  27. data/lib/form_input/r18n/cs.yml +97 -0
  28. data/lib/form_input/r18n/en.yml +70 -0
  29. data/lib/form_input/r18n/pl.yml +122 -0
  30. data/lib/form_input/r18n/sk.yml +120 -0
  31. data/lib/form_input/r18n.rb +163 -0
  32. data/lib/form_input/steps.rb +365 -0
  33. data/lib/form_input/types.rb +176 -0
  34. data/lib/form_input/version.rb +12 -0
  35. data/lib/form_input.rb +5 -0
  36. data/test/helper.rb +21 -0
  37. data/test/localize/en.yml +63 -0
  38. data/test/r18n/cs.yml +60 -0
  39. data/test/r18n/xx.yml +51 -0
  40. data/test/reference/cs.txt +352 -0
  41. data/test/reference/cs.yml +14 -0
  42. data/test/reference/en.txt +76 -0
  43. data/test/reference/en.yml +8 -0
  44. data/test/reference/pl.txt +440 -0
  45. data/test/reference/pl.yml +16 -0
  46. data/test/reference/sk.txt +352 -0
  47. data/test/reference/sk.yml +14 -0
  48. data/test/test_core.rb +1272 -0
  49. data/test/test_localize.rb +27 -0
  50. data/test/test_r18n.rb +373 -0
  51. data/test/test_steps.rb +482 -0
  52. data/test/test_types.rb +307 -0
  53. metadata +145 -0
@@ -0,0 +1,27 @@
1
+ // Render simple form parameters in block style.
2
+
3
+ // Fetch parameters.
4
+
5
+ - params ||= []
6
+ - focus ||= focus.nil?
7
+ - report ||= report.nil? && request.post?
8
+
9
+ // Choose parameter to focus on if enabled.
10
+
11
+ - focused ||= params.find{ |x| x.invalid? } || params.find{ |x| x.blank? } || params.first if focus
12
+
13
+ // Render each parameter, reporting errors as necessary.
14
+
15
+ - for p in params
16
+ - case p.type
17
+ - when :ignore
18
+ - when :hidden
19
+ input type='hidden' name=p.form_name value=p.form_value
20
+ - else
21
+ .form-group
22
+ input.form-control type=p.type name=p.form_name value=p.form_value placeholder=p.form_title autofocus=(p == focused)
23
+ - if report and error = p.error
24
+ .help-block
25
+ span.text-danger = error
26
+
27
+ // EOF //
@@ -0,0 +1,25 @@
1
+ // Render chunked form parameters in panel style.
2
+
3
+ // Fetch parameters.
4
+
5
+ - chunked_params = params || []
6
+ - params = chunked_params.flatten
7
+ - focus ||= focus.nil?
8
+ - report ||= report.nil? && request.post?
9
+
10
+ // Choose parameter to focus on if enabled.
11
+
12
+ - focused ||= params.find{ |x| x.invalid? } || params.find{ |x| x.blank? } || params.first if focus
13
+
14
+ // Render each row of parameters.
15
+
16
+ - for p in chunked_params
17
+ - if p.is_a?( Array )
18
+ .row
19
+ - for param in p
20
+ div class="col-sm-#{param[ :cols ] || 12 / p.count}"
21
+ == snippet :form_panel, params: [ param ], focus: focus, focused: focused, report: report
22
+ - else
23
+ == snippet :form_panel, params: [ p ], focus: focus, focused: focused, report: report
24
+
25
+ // EOF //
@@ -0,0 +1,21 @@
1
+ // Render all form parameters as hidden ones.
2
+
3
+ // Fetch parameters.
4
+
5
+ - params ||= []
6
+
7
+ // Render each parameter.
8
+
9
+ - for p in params
10
+ - next if p.ignored?
11
+ - next unless p.filled?
12
+ - if p.array?
13
+ - for value in p.form_value
14
+ input type='hidden' name=p.form_name value=value
15
+ - elsif p.hash?
16
+ - for key, value in p.form_value
17
+ input type='hidden' name=p.form_name( key ) value=value
18
+ - else
19
+ input type='hidden' name=p.form_name value=p.form_value
20
+
21
+ // EOF //
@@ -0,0 +1,89 @@
1
+ // Render form parameters in panel style.
2
+
3
+ // Fetch parameters.
4
+
5
+ - params ||= []
6
+ - focus ||= focus.nil?
7
+ - report ||= report.nil? && request.post?
8
+
9
+ // Choose parameter to focus on if enabled.
10
+
11
+ - focused ||= params.find{ |x| x.invalid? } || params.find{ |x| x.blank? } || params.first if focus
12
+
13
+ // Render each parameter, reporting errors as necessary.
14
+
15
+ - for p in params
16
+ - next if p.ignored?
17
+ - if p.hidden?
18
+ == snippet :form_hidden, params: [ p ]
19
+ - else
20
+ .form-group
21
+ - case p.type
22
+ - when :select
23
+ label
24
+ = p.form_title
25
+ - if subtitle = p[ :subtitle ]
26
+ small =< subtitle
27
+ select.form-control name=p.form_name multiple=p.array? autofocus=(p == focused) disabled=p.disabled? size=p[ :size ]
28
+ - for value, name in p.data
29
+ option selected=p.selected?( value ) value=p.format_value( value ) = name
30
+ - when :textarea
31
+ label
32
+ = p.form_title
33
+ - if subtitle = p[ :subtitle ]
34
+ small =< subtitle
35
+ textarea.form-control name=p.form_name autofocus=(p == focused) disabled=p.disabled? rows=p[ :size ] = p.form_value
36
+ - when :checkbox
37
+ - if p.array?
38
+ = p.form_title
39
+ - if subtitle = p[ :subtitle ]
40
+ small =< subtitle
41
+ - for value, name in p.data
42
+ label
43
+ input.form-control type=p.type name=p.form_name value=p.format_value( value ) autofocus=(p == focused) disabled=p.disabled? checked=p.selected?( value )
44
+ = name
45
+ - else
46
+ label
47
+ = p.form_title
48
+ - if subtitle = p[ :subtitle ]
49
+ small =< subtitle
50
+ input.form-control type=p.type name=p.form_name value='true' autofocus=(p == focused) disabled=p.disabled? checked=p.value
51
+ = p[ :text ]
52
+ - when :radio
53
+ = p.form_title
54
+ - if subtitle = p[ :subtitle ]
55
+ small =< subtitle
56
+ - for value, name in p.data
57
+ label
58
+ input.form-control type=p.type name=p.form_name value=p.format_value( value ) autofocus=(p == focused) disabled=p.disabled? checked=p.selected?( value )
59
+ = name
60
+ - else
61
+ label
62
+ = p.form_title
63
+ - if subtitle = p[ :subtitle ]
64
+ small =< subtitle
65
+
66
+ - if p.array?
67
+ - for value in p.form_value
68
+ .form-group
69
+ input.form-control type=p.type name=p.form_name value=value autofocus=(p.invalid? and p == focused) disabled=p.disabled? placeholder=p[ :placeholder ]
70
+ - unless limit = p[ :max_count ] and p.form_value.count >= limit
71
+ input.form-control type=p.type name=p.form_name autofocus=(p.valid? and p == focused) disabled=p.disabled? placeholder=p[ :placeholder ]
72
+
73
+ - elsif p.hash?
74
+ - for key, value in p.form_value
75
+ .form-group
76
+ input.form-control type=p.type name=p.form_name( key ) value=value autofocus=(p.invalid? and p == focused) disabled=p.disabled? placeholder=p[ :placeholder ]
77
+ - unless limit = p[ :max_count ] and p.form_value.count >= limit
78
+ input.form-control type=p.type name=p.form_name( p.form_value.count ) autofocus=(p.valid? and p == focused) disabled=p.disabled? placeholder=p[ :placeholder ]
79
+
80
+ - else
81
+ input.form-control type=p.type name=p.form_name value=p.form_value autofocus=(p == focused) disabled=p.disabled? placeholder=p[ :placeholder ]
82
+
83
+ - if report and error = p.error
84
+ .help-block
85
+ span.text-danger = error
86
+ - if help = p[ :help ]
87
+ .help-block = help
88
+
89
+ // EOF //
@@ -0,0 +1,32 @@
1
+ # Gem specification.
2
+
3
+ require File.expand_path( '../lib/form_input/version', __FILE__ )
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = 'form_input'
7
+ s.version = FormInput::Version::STRING + '.pre1'
8
+ s.summary = 'Form helper which sanitizes, transforms, validates and encapsulates web request input.'
9
+ s.description = <<EOT
10
+ This gem allows you to describe your forms using a simple DSL
11
+ and then takes care of sanitizing, transforming, and validating the input for you,
12
+ providing you with the ready-to-use input in a model-like structure.
13
+ Both simple forms as well as multi-step forms are supported.
14
+ Includes handy accessors for automatically building the forms
15
+ and reporting error messages using a templating engine of your choice.
16
+ Localization support with builtin inflection rules can be enabled, too.
17
+ EOT
18
+
19
+ s.author = 'Patrik Rak'
20
+ s.email = 'patrik@raxoft.cz'
21
+ s.homepage = 'https://github.com/raxoft/form_input'
22
+ s.license = 'MIT'
23
+
24
+ s.files = `git ls-files`.split( "\n" )
25
+
26
+ s.required_ruby_version = '>= 2.0.0'
27
+ s.add_runtime_dependency 'rack', '~> 1.5'
28
+ s.add_development_dependency 'bacon', '~> 1.2'
29
+ s.add_development_dependency 'r18n-core', '~> 2.0'
30
+ end
31
+
32
+ # EOF #