hashidator 0.3 → 0.3.1
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.
- data/README +2 -0
- data/hashidator.gemspec +3 -3
- data/lib/hashidator.rb +3 -2
- data/test/test_hashidator.rb +16 -1
- metadata +21 -6
data/README
CHANGED
data/hashidator.gemspec
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "hashidator"
|
3
|
-
s.version = "0.3"
|
4
|
-
s.date = "2010-
|
3
|
+
s.version = "0.3.1"
|
4
|
+
s.date = "2010-10-05"
|
5
5
|
s.summary = "define schemas as a hash, and validate hashes!"
|
6
6
|
s.email = "harry@vangberg.name"
|
7
7
|
s.homepage = "http://github.com/ichverstehe/hashidator"
|
8
8
|
s.description = "define schemas as a hash, and validate hashes!"
|
9
9
|
s.has_rdoc = false
|
10
|
-
s.authors = ["Harry Vangberg"]
|
10
|
+
s.authors = ["Harry Vangberg", "Peter Suschlik"]
|
11
11
|
s.files = [
|
12
12
|
"README",
|
13
13
|
"TODO",
|
data/lib/hashidator.rb
CHANGED
@@ -10,6 +10,7 @@ class Hashidator
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def validate(input)
|
13
|
+
input ||= {}
|
13
14
|
schema.all? {|key, validator|
|
14
15
|
validate_value(validator, input[key])
|
15
16
|
}
|
@@ -22,11 +23,11 @@ class Hashidator
|
|
22
23
|
when Range
|
23
24
|
validator.include? value
|
24
25
|
when Array
|
25
|
-
value.all? {|x| validate_value(validator[0], x)}
|
26
|
+
value.respond_to?(:all?) && value.all? {|x| validate_value(validator[0], x)}
|
26
27
|
when Symbol
|
27
28
|
value.respond_to? validator
|
28
29
|
when Regexp
|
29
|
-
|
30
|
+
validator.match value.to_s
|
30
31
|
when Hash
|
31
32
|
Hashidator.validate(validator, value)
|
32
33
|
when Class, Module
|
data/test/test_hashidator.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'test/helper'
|
1
|
+
require './test/helper.rb'
|
2
2
|
|
3
3
|
class TestHashidator < Test::Unit::TestCase
|
4
4
|
def h(schema, input)
|
@@ -44,6 +44,12 @@ class TestHashidator < Test::Unit::TestCase
|
|
44
44
|
assert_false h({:children => [String]}, {:children => ["Sue", 1234]})
|
45
45
|
end
|
46
46
|
|
47
|
+
def test_invalidate_array_members_with_non_array_values
|
48
|
+
assert_false h({:ary => [String]}, {:ary => nil})
|
49
|
+
assert_false h({:ary => [String]}, {:ary => :not_an_array})
|
50
|
+
assert_false h({:ary => [String]}, {:ary => {:i_am => "a hash"}})
|
51
|
+
end
|
52
|
+
|
47
53
|
def test_validate_boolean
|
48
54
|
assert_true h({:admin => Boolean}, {:admin => true})
|
49
55
|
assert_true h({:admin => Boolean}, {:admin => true})
|
@@ -59,6 +65,8 @@ class TestHashidator < Test::Unit::TestCase
|
|
59
65
|
|
60
66
|
def test_invalidate_regexp
|
61
67
|
assert_false h({:uri => /^http:/}, {:uri => "john coltrane"})
|
68
|
+
assert_false h({:uri => /^http:/}, {:uri => nil})
|
69
|
+
assert_false h({:uri => /^http:/}, {:uri => :symbol})
|
62
70
|
end
|
63
71
|
|
64
72
|
def test_validate_respond_to
|
@@ -139,4 +147,11 @@ class TestHashidator < Test::Unit::TestCase
|
|
139
147
|
{:people => [{ :name => "Ann", :age => 15 }, { :name => "Bob", :age => 23 }]}
|
140
148
|
)
|
141
149
|
end
|
150
|
+
|
151
|
+
def test_invalidate_for_nil_input
|
152
|
+
schema = {:user => { :name => String }}
|
153
|
+
assert_false h(schema, nil)
|
154
|
+
assert_false h(schema, {})
|
155
|
+
assert_false h(schema, {:user => nil})
|
156
|
+
end
|
142
157
|
end
|
metadata
CHANGED
@@ -1,15 +1,22 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hashidator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 17
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 3
|
9
|
+
- 1
|
10
|
+
version: 0.3.1
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Harry Vangberg
|
14
|
+
- Peter Suschlik
|
8
15
|
autorequire:
|
9
16
|
bindir: bin
|
10
17
|
cert_chain: []
|
11
18
|
|
12
|
-
date: 2010-
|
19
|
+
date: 2010-10-05 00:00:00 +02:00
|
13
20
|
default_executable:
|
14
21
|
dependencies: []
|
15
22
|
|
@@ -26,7 +33,9 @@ files:
|
|
26
33
|
- TODO
|
27
34
|
- hashidator.gemspec
|
28
35
|
- lib/hashidator.rb
|
29
|
-
|
36
|
+
- test/helper.rb
|
37
|
+
- test/test_hashidator.rb
|
38
|
+
has_rdoc: true
|
30
39
|
homepage: http://github.com/ichverstehe/hashidator
|
31
40
|
licenses: []
|
32
41
|
|
@@ -36,21 +45,27 @@ rdoc_options: []
|
|
36
45
|
require_paths:
|
37
46
|
- lib
|
38
47
|
required_ruby_version: !ruby/object:Gem::Requirement
|
48
|
+
none: false
|
39
49
|
requirements:
|
40
50
|
- - ">="
|
41
51
|
- !ruby/object:Gem::Version
|
52
|
+
hash: 3
|
53
|
+
segments:
|
54
|
+
- 0
|
42
55
|
version: "0"
|
43
|
-
version:
|
44
56
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
45
58
|
requirements:
|
46
59
|
- - ">="
|
47
60
|
- !ruby/object:Gem::Version
|
61
|
+
hash: 3
|
62
|
+
segments:
|
63
|
+
- 0
|
48
64
|
version: "0"
|
49
|
-
version:
|
50
65
|
requirements: []
|
51
66
|
|
52
67
|
rubyforge_project:
|
53
|
-
rubygems_version: 1.3.
|
68
|
+
rubygems_version: 1.3.7
|
54
69
|
signing_key:
|
55
70
|
specification_version: 3
|
56
71
|
summary: define schemas as a hash, and validate hashes!
|