form_input_field 0.8.55

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: f2a0c3247cbaa08d12349cd0d6b12380ac5e668a402cf9149202f5567b0e4889
4
+ data.tar.gz: 30480481a563778a1a011a5bef06eef416a72c43f14b17cb00e1e1adcb9d45f9
5
+ SHA512:
6
+ metadata.gz: be003698c88287364e4ef3a698b3d94b4896bc76e149d603c1cdca99c64345c09f094ac6fa71f4c2e5c298f689ae5d0a80e9af4e0519641cc3972b84698786db
7
+ data.tar.gz: 6de3811df9c908b734b8d4b04171e503691001dd4836190d05b4c608b6dbf88443f9ce8eff0cb85991736a67444bd150c0c70b07a35eacbd4dfcdc8765ade851
@@ -0,0 +1,3 @@
1
+ module FormInputField
2
+ VERSION = "0.8.55"
3
+ end
@@ -0,0 +1,185 @@
1
+ require "form_input_field/version"
2
+ require 'rails'
3
+ require 'action_view'
4
+
5
+ module FormInputField
6
+
7
+ class InvalidSymbolError < StandardError ; end
8
+ class InvalidArgumentError < StandardError ; end
9
+
10
+
11
+ @@compatible_field_tags = [:check_box, :text_field, :color_field, :date_field, :datetime_field, :datetime_local_field, :email_field, :file_field, :hidden_field, :month_field, :number_field, :password_field, :phone_field, :radio_button, :range_field, :search_field, :telephone_field, :text_area, :time_field, :url_field, :week_field]
12
+
13
+
14
+
15
+ # -----
16
+ def form_input_field(helper_sym, object_name, method, *args, **options)
17
+
18
+ if(not @@compatible_field_tags.include?(helper_sym))
19
+ raise InvalidSymbolError, 'WARNING: Invalid symbol given as parameter for helper_sym. Recieved the following symbol: ' + helper_sym.to_s + '. Valid symbols for helpers are as follows: ' + compatible_field_tags.to_s
20
+ end
21
+
22
+ # --- Establishing a list of valid parameters:
23
+ parameters = [:label_text, :options, :label_options]
24
+ # -- Establishing the default values for said parameters:
25
+ values = {:options => {}, :label_text => false, :label_options => {}}
26
+
27
+ # -- Capturing extraneous parameters for non-conforming html elements:
28
+ if helper_sym == :check_box
29
+ parameters = parameters + [:checked_value, :unchecked_value]
30
+ values[:checked_value] = "1"
31
+ values[:unchecked_value] = "0"
32
+
33
+ elsif helper_sym == :radio_button
34
+ parameters = [:tag_value] + parameters
35
+ values[:tag_value] = false
36
+
37
+ if args.empty? || (not (args[0].is_a?(String) || args[0].is_a?(Symbol)))
38
+ raise InvalidArgumentError, "WARNING: Please supply valid argument for tag_value whilst using :radio_button for helper_sym."
39
+ end
40
+
41
+ end
42
+
43
+ # -- Continuing capture of valid parameters:
44
+ parameters = parameters + [:value_key]
45
+ values[:value_key] = :values
46
+
47
+ # --- Iterate through argument list placing values into parameter hash-map:
48
+ count = 0
49
+ args.each do |argument|
50
+ parameter = parameters[count]
51
+ values[parameter] = argument
52
+ count += 1
53
+ end
54
+
55
+ # --- Iterate through option list placing values into parameter hash-map:
56
+ options.each do |parameter, argument|
57
+ if parameters.include?(parameter)
58
+ values[parameter] = argument
59
+ count += 1
60
+ else
61
+
62
+ # This captures the case in which a hash *concludes* the arguments list;
63
+ # Ruby will put this into **options regardless - an annoying quirk.
64
+ # For example:
65
+ # form_input_field(:text_field, :user, "email", "Email", {:class => "form-control"}
66
+ # will assign {:class => "form-control", :disabled => false} into **options
67
+ # This is despite the fact the trailing array is an explicit argument
68
+ # that should be placed into *args
69
+
70
+ parameter_key = parameters[count]
71
+ if parameter_key == :options or parameter_key == :label_options
72
+ new_argument = {parameter => argument}
73
+ values[parameter_key] = values[parameter_key].merge(new_argument)
74
+ elsif parameter_key != parameter
75
+ raise InvalidArgumentError, "WARNING: Unknown explicitly declared parameter. Received: " + parameter.to_s + " with value: " + argument.to_s + ". Did you mean: " + parameter_key + " for a parameter?"
76
+ end
77
+ end
78
+ end
79
+
80
+ # --- Place potential value for an input element's value attribute:
81
+ value = {}
82
+ if values[:value_key] && defined?(flash)
83
+ value_key = values[:value_key]
84
+ if flash[value_key]
85
+ if (flash[value_key].is_a?(String) or flash[value_key].is_a?(Symbol))
86
+ value = {:value => flash[value_key]}
87
+ elsif flash[value_key].is_a?(Hash)
88
+ value = {:value => flash[value_key][method]}
89
+ end
90
+ end
91
+ end
92
+
93
+ # --- Build the label for the relevant html field:
94
+ if( not ((values[:label_text] == "") or (values[:label_text] == false)) )
95
+ label = label object_name, method, values[:label_text], values[:label_options]
96
+ else
97
+ label = ""
98
+ end
99
+
100
+ # --- Build the html element for the relevant field:
101
+ if(helper_sym == :radio_button)
102
+ input = self.send(helper_sym, object_name, method, values[:tag_value], values[:options].merge(value))
103
+ elsif(helper_sym == :check_box)
104
+ input = self.send(helper_sym, object_name, method, values[:options].merge(value), values[:checked_value], values[:unchecked_value])
105
+ else
106
+ input = self.send(helper_sym, object_name, method, values[:options].merge(value))
107
+ end
108
+
109
+ label + input
110
+
111
+ end
112
+
113
+
114
+
115
+
116
+ # -----
117
+ def form_error_field(object_name, method, *args, **options)
118
+
119
+ # --- Establishing a list of valid parameters:
120
+ parameters = [:label_options, :error_key]
121
+ # -- Establishing the default values for said parameters:
122
+ values = {:label_options => {}, :error_key => :errors}
123
+
124
+ # --- Iterate through argument list placing values into parameter hash-map:
125
+ count = 0
126
+ args.each do |argument|
127
+ parameter = parameters[count]
128
+ values[parameter] = argument
129
+ count += 1
130
+ end
131
+
132
+ # --- Iterate through option list placing values into parameter hash-map:
133
+ options.each do |parameter, argument|
134
+ if parameters.include?(parameter)
135
+ values[parameter] = argument
136
+ count += 1
137
+ else
138
+
139
+ # This captures the case in which a hash *concludes* the arguments list;
140
+ # Ruby will put this into **options regardless - an annoying quirk.
141
+ # For example:
142
+ # form_input_field(:text_field, :user, "email", "Email", {:class => "form-control"}
143
+ # will assign {:class => "form-control", :disabled => false} into **options
144
+ # This is despite the fact the trailing array is an explicit argument
145
+ # that should be placed into *args
146
+
147
+ parameter_key = parameters[count]
148
+ if parameter_key == :label_options
149
+ new_argument = {parameter => argument}
150
+ values[parameter_key] = values[parameter_key].merge(new_argument)
151
+ elsif parameter_key != parameter
152
+ raise InvalidArgumentError, "WARNING: Unknown explicitly declared parameter. Received: " + parameter.to_s + " with value: " + argument.to_s + ". Did you mean: " + parameter_key + " for a parameter?"
153
+ end
154
+ end
155
+ end
156
+
157
+ # --- Placing error label text:
158
+ error_text = ""
159
+ if values[:error_key] && defined?(flash)
160
+ error_key = values[:error_key]
161
+ if flash[error_key]
162
+ if (flash[error_key].is_a?(String) or flash[error_key].is_a?(Symbol))
163
+ error_text = flash[error_key]
164
+ elsif flash[error_key].is_a?(Hash)
165
+ error_text = flash[error_key][method][0]
166
+ end
167
+ end
168
+ end
169
+
170
+ if not (error_text == "")
171
+ label object_name, method, error_text, values[:label_options]
172
+ else
173
+ ""
174
+ end
175
+ end
176
+ end # end of FormInputField
177
+
178
+ # Place module into ActionView::Helpers::FormHelper:
179
+ module ActionView
180
+ module Helpers
181
+ module FormHelper
182
+ include FormInputField
183
+ end
184
+ end
185
+ end
metadata ADDED
@@ -0,0 +1,105 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: form_input_field
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.8.55
5
+ platform: ruby
6
+ authors:
7
+ - Alan McKay
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-07-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '2.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '2.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.17'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.17'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.0'
69
+ description:
70
+ email:
71
+ executables: []
72
+ extensions: []
73
+ extra_rdoc_files: []
74
+ files:
75
+ - lib/form_input_field.rb
76
+ - lib/form_input_field/version.rb
77
+ homepage: https://github.com/alanmmckay/form_input_field
78
+ licenses:
79
+ - MIT
80
+ metadata:
81
+ homepage_uri: https://github.com/alanmmckay/form_input_field
82
+ source_code_uri: https://github.com/alanmmckay/form_input_field
83
+ bug_tracker_uri: https://github.com/alanmmckay/form_input_field/issues
84
+ post_install_message:
85
+ rdoc_options: []
86
+ require_paths:
87
+ - lib
88
+ required_ruby_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 1.8.7
93
+ required_rubygems_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ requirements: []
99
+ rubygems_version: 3.0.3
100
+ signing_key:
101
+ specification_version: 4
102
+ summary: A gem for Ruby on Rails which wraps up functionality of maintaining values
103
+ for forms to factor cases where a POST fails model validation while also providing
104
+ a means to succinctly produce relevant error messages.
105
+ test_files: []