sinatra-params 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/sinatra/params.rb +24 -19
- data/lib/sinatra/params/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a4220d11aae943a4e7b24bf403554d749836423a
|
4
|
+
data.tar.gz: 050a991ab239f00dba247d3a3a577427889e7ac4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d92342df34606dc20f5164395a8a737e24ace64697420ebdf308c0cea357464852fd8313666f7028c16bb0692f98fdeec8d57adae22b7479aca22bc12cf90288
|
7
|
+
data.tar.gz: db4b8ce52284d5ad0b9db24edc622ed5e17ca409553132bb32b4ebe96c63222e1e70ecef3e81d93861d4a0bb193b9bd5890b7b46c9f5e80f61eeab6349a1ece3
|
data/lib/sinatra/params.rb
CHANGED
@@ -1,33 +1,38 @@
|
|
1
1
|
require 'date'
|
2
2
|
|
3
|
-
module
|
4
|
-
|
5
|
-
|
3
|
+
module Conversion
|
4
|
+
attr_accessor :respond_as, :convert
|
5
|
+
extend self
|
6
|
+
end
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
Conversion.respond_as = {
|
9
|
+
String => :to_s,
|
10
|
+
Integer => :to_i
|
11
|
+
}
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
}
|
13
|
+
Conversion.convert = {
|
14
|
+
String => {
|
15
|
+
Array => Proc.new { |input| input.split(%r{,\s*}) },
|
16
|
+
Date => Proc.new { |input| Date.parse(input) },
|
17
|
+
DateTime => Proc.new { |input| DateTime.parse(input) }
|
18
18
|
}
|
19
|
+
}
|
19
20
|
|
21
|
+
module Sinatra
|
22
|
+
module Params
|
20
23
|
def param (name, type, args = {})
|
21
|
-
raise 'Parameter {name} missing'.sub('{name}', name) unless params.key? name
|
24
|
+
raise 'Parameter {name} missing'.sub('{name}', name.to_s) unless params.key? name
|
25
|
+
|
26
|
+
params.define_singleton_method(name.to_sym) { self[name] }
|
22
27
|
|
23
|
-
|
28
|
+
p Conversion.respond_as
|
24
29
|
|
25
30
|
if params[name].class == type
|
26
31
|
# Do nothing
|
27
|
-
elsif params[name].respond_to? respond_as[type]
|
28
|
-
params[name] = params[name].send(respond_as[type])
|
29
|
-
elsif convert[params[name].class] and convert[params[name].class].key? type
|
30
|
-
params[name] = convert[params[name].class][type].call(params[name])
|
32
|
+
elsif params[name].respond_to? Conversion.respond_as[type]
|
33
|
+
params[name] = params[name].send(Conversion.respond_as[type])
|
34
|
+
elsif Conversion.convert[params[name].class] and Conversion.convert[params[name].class].key? type
|
35
|
+
params[name] = Conversion.convert[params[name].class][type].call(params[name])
|
31
36
|
else
|
32
37
|
raise 'Parameter {name} not found'.sub('{name}', name) unless args[:optional]
|
33
38
|
end
|