cerulean 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/cerulean.rb +41 -19
- 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: 8a55c2f55e2a8e0b5706ecc63c45195b3694ebe3
|
4
|
+
data.tar.gz: caeff050b3016337f6e3d27c25815f2a53f7eecb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cffe40593fc289fefc08e3ae36afd19c11d52eb171a40478e263285e6c9ce4b21c9750babf297ba9bb39f1219d1fd7152a34b85cc7f1db65fb1b7b33b984d2e6
|
7
|
+
data.tar.gz: 11d1b53ea9435d18df564290b3639694ddf4c92817f7db332ffa1949828ccb6cc86472048725b07fbb9bbdfeda7de5eb4ec633f0b617ad5e7db189405a6b6253
|
data/lib/cerulean.rb
CHANGED
@@ -80,22 +80,40 @@ module Cerulean
|
|
80
80
|
@meta ||= self.class.class_variable_get(:@@meta)[action_name.to_sym]
|
81
81
|
end
|
82
82
|
|
83
|
+
def parse_integer(val)
|
84
|
+
Integer(val) rescue nil
|
85
|
+
end
|
86
|
+
|
87
|
+
def parse_float(val)
|
88
|
+
Float(val) rescue nil
|
89
|
+
end
|
90
|
+
|
91
|
+
def parse_boolean(val)
|
92
|
+
case val.to_s.downcase
|
93
|
+
when 'true'
|
94
|
+
true
|
95
|
+
when 'false'
|
96
|
+
false
|
97
|
+
else
|
98
|
+
nil
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
83
102
|
def validate_param_type(val, type)
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
when 'Float'
|
88
|
-
Float(val) rescue false
|
89
|
-
when 'Boolean'
|
90
|
-
%w(true false).include?(val.to_s.downcase)
|
91
|
-
when 'Array[Integer]'
|
92
|
-
!val.any? { |el| !Integer(el) rescue true }
|
93
|
-
when 'Array[Float]'
|
94
|
-
!val.any? { |el| !Float(el) rescue true }
|
95
|
-
when 'Array[Boolean]'
|
96
|
-
!val.any? { |el| %w(true false).include?(el.downcase) }
|
103
|
+
if val.is_a?(Array)
|
104
|
+
parsed = val.map { |el| validate_param_type(el, type[0].to_s) }
|
105
|
+
parsed.all? ? parsed : nil
|
97
106
|
else
|
98
|
-
|
107
|
+
case type.to_s
|
108
|
+
when 'Integer'
|
109
|
+
parse_integer(val)
|
110
|
+
when 'Float'
|
111
|
+
parse_float(val)
|
112
|
+
when 'Boolean'
|
113
|
+
parse_boolean(val)
|
114
|
+
when 'String'
|
115
|
+
val
|
116
|
+
end
|
99
117
|
end
|
100
118
|
end
|
101
119
|
|
@@ -112,27 +130,31 @@ module Cerulean
|
|
112
130
|
@declared = {}
|
113
131
|
meta[:params].each do |param, opts|
|
114
132
|
if params.has_key?(param.to_s)
|
115
|
-
|
133
|
+
p = validate_param_type(params[param.to_s], opts[:type])
|
134
|
+
|
135
|
+
if p.nil?
|
136
|
+
raise "#{param} is not a #{opts[:type]}"
|
137
|
+
end
|
116
138
|
|
117
139
|
if opts.has_key?(:min)
|
118
|
-
if
|
140
|
+
if p < opts[:min]
|
119
141
|
raise "#{param} must be greater than or equal to #{opts[:min]}"
|
120
142
|
end
|
121
143
|
end
|
122
144
|
|
123
145
|
if opts.has_key?(:max)
|
124
|
-
if
|
146
|
+
if p > opts[:max]
|
125
147
|
raise "#{param} must be less than or equal to #{opts[:max]}"
|
126
148
|
end
|
127
149
|
end
|
128
150
|
|
129
151
|
if opts.has_key?(:values)
|
130
|
-
unless opts[:values].map { |val| val.to_s }.include?(
|
152
|
+
unless opts[:values].map { |val| val.to_s }.include?(p.to_s)
|
131
153
|
raise "#{param} must be one of #{opts[:values]}"
|
132
154
|
end
|
133
155
|
end
|
134
156
|
|
135
|
-
@declared[param] =
|
157
|
+
@declared[param] = p
|
136
158
|
else
|
137
159
|
params[param] = opts[:default] if opts.has_key?(:default)
|
138
160
|
raise "#{param} is required" if opts[:required]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cerulean
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kyle Kestell
|
@@ -37,7 +37,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
37
37
|
version: '0'
|
38
38
|
requirements: []
|
39
39
|
rubyforge_project:
|
40
|
-
rubygems_version: 2.4.
|
40
|
+
rubygems_version: 2.4.5.1
|
41
41
|
signing_key:
|
42
42
|
specification_version: 4
|
43
43
|
summary: Cerulean
|