client_side_validations 3.2.0.beta.5 → 3.2.0.beta.6
Sign up to get free protection for your applications and to get access to all the features.
@@ -90,59 +90,66 @@ module ClientSideValidations::ActionView::Helpers
|
|
90
90
|
def filter_validators(method, filters)
|
91
91
|
if validators = @object.client_side_validation_hash[method]
|
92
92
|
unfiltered_validators = validators.inject({}) do |unfiltered_validators, validator|
|
93
|
-
|
94
|
-
|
95
|
-
if
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
@object.
|
106
|
-
|
107
|
-
|
93
|
+
kind = validator.first
|
94
|
+
unfiltered_validators[kind] = validator.last.inject([]) do |validators_array, validator_hash|
|
95
|
+
if has_filter_for_validator?(kind, filters)
|
96
|
+
if filter_validator?(kind, filters)
|
97
|
+
next
|
98
|
+
elsif force_validator_despite_conditional?(kind, filters) && !can_run_validator?(validator_hash, method)
|
99
|
+
next
|
100
|
+
end
|
101
|
+
else
|
102
|
+
if (conditional = (validator_hash[:if] || validator_hash[:unless]))
|
103
|
+
result = case conditional
|
104
|
+
when Symbol
|
105
|
+
if @object.respond_to?(conditional)
|
106
|
+
@object.send(conditional)
|
107
|
+
else
|
108
|
+
raise(ArgumentError, "unknown method called '#{conditional}'")
|
109
|
+
end
|
110
|
+
when String
|
111
|
+
eval(conditional)
|
112
|
+
when Proc
|
113
|
+
conditional.call(@object)
|
108
114
|
end
|
109
|
-
when String
|
110
|
-
eval(conditional)
|
111
|
-
when Proc
|
112
|
-
conditional.call(@object)
|
113
|
-
end
|
114
115
|
|
115
|
-
|
116
|
-
|
117
|
-
|
116
|
+
# :if was specified and result is false OR :unless was specified and result was true
|
117
|
+
if (validator_hash[:if] && !result) || (validator_hash[:unless] && result)
|
118
|
+
next
|
119
|
+
end
|
118
120
|
end
|
121
|
+
|
119
122
|
end
|
123
|
+
|
124
|
+
validators_array << validator_hash.clone
|
125
|
+
validators_array.last.delete_if { |key, value| key == :if || key == :unless }
|
126
|
+
validators_array
|
120
127
|
end
|
121
|
-
|
122
|
-
unfiltered_validators[validator.first].delete(:unless) if unfiltered_validators[validator.first]
|
128
|
+
|
123
129
|
unfiltered_validators
|
124
130
|
end
|
125
131
|
|
132
|
+
unfiltered_validators.delete_if { |k, v| v.nil? }
|
126
133
|
unfiltered_validators.empty? ? nil : unfiltered_validators
|
127
134
|
end
|
128
135
|
end
|
129
136
|
|
130
|
-
def has_filter_for_validator?(
|
131
|
-
filters && (filters == true || filters.key?(
|
137
|
+
def has_filter_for_validator?(kind, filters)
|
138
|
+
filters && (filters == true || filters.key?(kind))
|
132
139
|
end
|
133
140
|
|
134
|
-
def filter_validator?(
|
135
|
-
filters != true && filters[
|
141
|
+
def filter_validator?(kind, filters)
|
142
|
+
filters != true && filters[kind] == false
|
136
143
|
end
|
137
144
|
|
138
|
-
def force_validator_despite_conditional?(
|
139
|
-
filters == true || filters[
|
145
|
+
def force_validator_despite_conditional?(kind, filters)
|
146
|
+
filters == true || filters[kind] == true
|
140
147
|
end
|
141
148
|
|
142
|
-
def can_run_validator?(
|
149
|
+
def can_run_validator?(validator_hash, method)
|
143
150
|
result = true
|
144
|
-
if_result = run_if_validator(
|
145
|
-
unless_result = run_unless_validator(
|
151
|
+
if_result = run_if_validator(validator_hash[:if], method)
|
152
|
+
unless_result = run_unless_validator(validator_hash[:unless], method)
|
146
153
|
result = result && if_result unless if_result.nil?
|
147
154
|
result = result && unless_result unless unless_result.nil?
|
148
155
|
result
|
@@ -173,4 +180,3 @@ module ClientSideValidations::ActionView::Helpers
|
|
173
180
|
end
|
174
181
|
end
|
175
182
|
end
|
176
|
-
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: client_side_validations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2.0.beta.
|
4
|
+
version: 3.2.0.beta.6
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -206,7 +206,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
206
206
|
version: '0'
|
207
207
|
segments:
|
208
208
|
- 0
|
209
|
-
hash:
|
209
|
+
hash: -2310212985539069704
|
210
210
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
211
211
|
none: false
|
212
212
|
requirements:
|