roda-component 0.1.20 → 0.1.21
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 +4 -4
- data/lib/roda/component/events.rb +2 -1
- data/lib/roda/component/form.rb +66 -21
- data/lib/roda/component/form/validations.rb +5 -8
- data/lib/roda/component/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a16bb2b329a369806cff4a67ac5988eac549382c
|
4
|
+
data.tar.gz: 4cf66e8d5cd2579d3949cb2629dc10eeef204dbd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dd5d13d7a64980b0b8e894b2eb34674a349cd492e44efd2d3bdf7816ff7720e9f0acbcda0738a06f17af2467c958d3cc631fcd30bb588c6c19724a8d9f7732cc
|
7
|
+
data.tar.gz: 99af32ec110135bd65a7970600d62811490201879099baea649a6b2d40461c502a453b70d9d47b85a1b522c893d1497acf3d5bed3d6ad1aee0c7bd9a5dbaa094
|
@@ -68,7 +68,6 @@ class Roda
|
|
68
68
|
evt.prevent_default
|
69
69
|
|
70
70
|
params = {}
|
71
|
-
el.find('.field-error').remove
|
72
71
|
|
73
72
|
# loop through all the forum values
|
74
73
|
el.serialize_array.each do |row|
|
@@ -97,6 +96,8 @@ class Roda
|
|
97
96
|
form = form_klass.new params_obj, opts
|
98
97
|
end
|
99
98
|
|
99
|
+
el.find(opts[:error_selector] || '.field-error').remove
|
100
|
+
|
100
101
|
Component::Instance.new(component(comp), scope).instance_exec form, evt.current_target, evt, &block
|
101
102
|
end
|
102
103
|
else
|
data/lib/roda/component/form.rb
CHANGED
@@ -10,8 +10,10 @@ class Roda
|
|
10
10
|
@_attributes = []
|
11
11
|
|
12
12
|
atts.each do |key, val|
|
13
|
-
|
14
|
-
|
13
|
+
if respond_to?("#{key}=")
|
14
|
+
send(:"#{key}=", val)
|
15
|
+
@_attributes << key
|
16
|
+
end
|
15
17
|
end
|
16
18
|
end
|
17
19
|
|
@@ -67,17 +69,38 @@ class Roda
|
|
67
69
|
# post = Post.new(edit.attributes)
|
68
70
|
# post.save
|
69
71
|
def initialize(atts, options = {})
|
72
|
+
@_data = atts
|
73
|
+
@_data = atts.to_obj if atts.is_a? Hash
|
70
74
|
@_options = options
|
71
75
|
|
72
76
|
# @_attributes = Class.new(Attributes).new
|
73
77
|
@_attributes = Attributes.new
|
74
78
|
@_attributes.set_attr_accessors _attr_accessors
|
75
|
-
@_attributes.set_values
|
79
|
+
@_attributes.set_values _data
|
80
|
+
|
81
|
+
_form.each do |key, klass|
|
82
|
+
opts = {}
|
83
|
+
opts[key] = _data.send(key) if _data.respond_to?(key)
|
84
|
+
@_attributes.set_values opts
|
85
|
+
end
|
76
86
|
end
|
77
87
|
|
78
88
|
def self.attr_accessor(*vars)
|
79
89
|
@_attr_accessors ||= []
|
80
|
-
@
|
90
|
+
@_form ||= {}
|
91
|
+
|
92
|
+
vars.each do |v|
|
93
|
+
if !v.is_a? Hash
|
94
|
+
@_attr_accessors << v unless @_attr_accessors.include? v
|
95
|
+
else
|
96
|
+
v = v.first
|
97
|
+
|
98
|
+
unless @_attr_accessors.include? v.first
|
99
|
+
@_attr_accessors << v.first
|
100
|
+
@_form[v.first] = v.last
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
81
104
|
end
|
82
105
|
|
83
106
|
def method_missing method, *args, &block
|
@@ -94,7 +117,7 @@ class Roda
|
|
94
117
|
Hash.new.tap do |atts|
|
95
118
|
_attributes.instance_variables.each do |ivar|
|
96
119
|
# todo: figure out why it's setting @constructor and @toString
|
97
|
-
next if ivar == :@constructor || ivar == :@toString || ivar == :@_attributes
|
120
|
+
next if ivar == :@constructor || ivar == :@toString || ivar == :@_attributes || ivar == :@_data || ivar == :@_forms
|
98
121
|
|
99
122
|
att = ivar[1..-1].to_sym
|
100
123
|
atts[att] = _attributes.send(att)
|
@@ -155,25 +178,35 @@ class Roda
|
|
155
178
|
def render_values dom = false, key = false, data = false
|
156
179
|
dom = _options[:dom] unless dom
|
157
180
|
key = _options[:key] if !key && _options.key?(:key)
|
158
|
-
data = attributes unless data
|
159
181
|
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
182
|
+
dom.find('input, select') do |element|
|
183
|
+
name = element['name']
|
184
|
+
name = name.gsub(/\A#{key}/, '') if key
|
185
|
+
keys = name.gsub(/\A\[/, '').gsub(/[^a-z0-9_]/, '|').gsub(/\|\|/, '|').gsub(/\|$/, '').split('|')
|
186
|
+
value = false
|
187
|
+
|
188
|
+
keys.each do |k|
|
189
|
+
begin
|
190
|
+
value = value ? value.send(k) : send(k)
|
191
|
+
|
192
|
+
if klass = _form[k.to_s.to_sym]
|
193
|
+
options = {}
|
194
|
+
options[:key] = _options[:key] if _options.key? :key
|
195
|
+
|
196
|
+
value = klass.new(value, options)
|
175
197
|
end
|
198
|
+
rescue
|
199
|
+
value = ''
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
case element.name
|
204
|
+
when 'select'
|
205
|
+
element.find('option') do |x|
|
206
|
+
x['selected'] = true if x['value'] == value.to_s
|
176
207
|
end
|
208
|
+
when 'input'
|
209
|
+
element['value'] = value.to_s
|
177
210
|
end
|
178
211
|
end
|
179
212
|
end
|
@@ -184,10 +217,22 @@ class Roda
|
|
184
217
|
@_attr_accessors
|
185
218
|
end
|
186
219
|
|
220
|
+
def self._form
|
221
|
+
@_form
|
222
|
+
end
|
223
|
+
|
187
224
|
def _attributes
|
188
225
|
@_attributes ||= []
|
189
226
|
end
|
190
227
|
|
228
|
+
def _form
|
229
|
+
self.class._form
|
230
|
+
end
|
231
|
+
|
232
|
+
def _data
|
233
|
+
@_data ||= []
|
234
|
+
end
|
235
|
+
|
191
236
|
def _attr_accessors
|
192
237
|
self.class._attr_accessors
|
193
238
|
end
|
@@ -107,19 +107,16 @@ class Roda
|
|
107
107
|
# @param [Symbol] att The attribute you wish to verify the presence of.
|
108
108
|
# @param [Array<Symbol, Symbol>] error The error that should be returned
|
109
109
|
# when the validation fails.
|
110
|
-
def assert_present(att, error = [att, :not_present]
|
111
|
-
if
|
112
|
-
error_new = klass.dup
|
113
|
-
klass = error
|
114
|
-
error = error_new || [att, :not_present]
|
115
|
-
|
110
|
+
def assert_present(att, error = [att, :not_present])
|
111
|
+
if klass = _form[att]
|
116
112
|
options = {}
|
117
113
|
options[:key] = _options[:key] if _options.key? :key
|
118
114
|
|
119
|
-
f = klass.new(
|
115
|
+
f = klass.new(send(att), options)
|
120
116
|
assert(f.valid?, [att, f.errors])
|
121
117
|
else
|
122
|
-
|
118
|
+
binding.pry if att.to_s == 'line1'
|
119
|
+
assert(!send(att).to_s.empty?, error)
|
123
120
|
end
|
124
121
|
end
|
125
122
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roda-component
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.21
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- cj
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opal
|