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 +7 -0
- data/lib/form_input_field/version.rb +3 -0
- data/lib/form_input_field.rb +185 -0
- metadata +105 -0
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,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: []
|