type_constraints 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +30 -0
- data/lib/type_constraints/registry.rb +7 -0
- data/lib/type_constraints/type/default.rb +51 -0
- data/lib/type_constraints/version.rb +1 -1
- data/lib/type_constraints.rb +2 -0
- data/spec/type_constraints/registry_spec.rb +15 -0
- data/spec/type_constraints/type/default_spec.rb +8 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d321d732d3d4087cda537651e00118b23d9337f6
|
4
|
+
data.tar.gz: bb47d587b09dd20882f273235a01fb66676c58c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 28e407443eeb983a0f35409af49177b9ab417f7fabc813b1121a68a4a76d44cb82a54b20c3528fb5995f63885ac950712d62ef29acc6b9664dc9067fc056ced4
|
7
|
+
data.tar.gz: 71ce039bda02c0f5d9d0499f9e22c79d6295702d016db6aa327df96c75b150fd5791ede1917c91c4de94d81fa24ec153f7e2afab8216c3980a3fd1f9507cb85d
|
data/README.md
CHANGED
@@ -25,6 +25,7 @@ p TypeConstraints.check?(:Array, {}) #=> false
|
|
25
25
|
puts "testing ArrayOfString"
|
26
26
|
p TypeConstraints.check?(:ArrayOfString, ["1000", "2000"]) #=> true
|
27
27
|
p TypeConstraints.check?(:ArrayOfString, [1000, 2000]) #=> false
|
28
|
+
p TypeConstraints.check?(:ArrayOfString, {}) #=> false
|
28
29
|
|
29
30
|
puts "testing ArrayOfHisa"
|
30
31
|
p TypeConstraints.check?(:ArrayOfHisa, ["5518"]) #=> true
|
@@ -32,6 +33,35 @@ p TypeConstraints.check?(:ArrayOfHisa, ["hisa"]) #=> false
|
|
32
33
|
p TypeConstraints.check?(:ArrayOfHisa, [5518]) #=> false
|
33
34
|
```
|
34
35
|
|
36
|
+
## Default Type Constrains
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
BasicObject
|
40
|
+
Object
|
41
|
+
Hash
|
42
|
+
Array
|
43
|
+
Method
|
44
|
+
UnboundMethod
|
45
|
+
String
|
46
|
+
Symbol
|
47
|
+
Range
|
48
|
+
Exception
|
49
|
+
NilClass
|
50
|
+
TrueClass
|
51
|
+
FalseClass
|
52
|
+
Regexp
|
53
|
+
Time
|
54
|
+
MatchData
|
55
|
+
Proc
|
56
|
+
Module
|
57
|
+
Class
|
58
|
+
Numeric
|
59
|
+
Float
|
60
|
+
Integer
|
61
|
+
Bignum
|
62
|
+
Fixnum
|
63
|
+
```
|
64
|
+
|
35
65
|
## Installation
|
36
66
|
|
37
67
|
Add this line to your application's Gemfile:
|
@@ -16,5 +16,12 @@ module TypeConstraints
|
|
16
16
|
meta.instance_eval(&code)
|
17
17
|
metas[name] = meta
|
18
18
|
end
|
19
|
+
|
20
|
+
# hash_type :Test, :key_name, ...
|
21
|
+
def hash_type(name, *keys, &code)
|
22
|
+
meta = Meta.new(name: name, parent: metas[:Hash], constraint: -> v { keys.all?() {|k| v.key?(k)} })
|
23
|
+
meta.instance_eval(&code) if code
|
24
|
+
metas[name] = meta
|
25
|
+
end
|
19
26
|
end
|
20
27
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module TypeConstraints
|
2
|
+
module Type
|
3
|
+
module Default
|
4
|
+
end
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
module TypeConstraints::Type::Default
|
9
|
+
DEFAULT_TYPES = {
|
10
|
+
BasicObject: [-> v { v.kind_of?(BasicObject) }],
|
11
|
+
Object: [-> v { v.kind_of?(Object) }, :BasicObject],
|
12
|
+
Hash: [-> v { v.kind_of?(Hash) }, :Object],
|
13
|
+
Array: [-> v { v.kind_of?(Array) }, :Object],
|
14
|
+
Method: [-> v { v.kind_of?(Method) }, :Object],
|
15
|
+
UnboundMethod: [-> v { v.kind_of?(UnboundMethod) }, :Object],
|
16
|
+
String: [-> v { v.kind_of?(String) }, :Object],
|
17
|
+
Symbol: [-> v { v.kind_of?(Symbol) }, :Object],
|
18
|
+
Range: [-> v { v.kind_of?(Range) }, :Object],
|
19
|
+
Exception: [-> v { v.kind_of?(Exception) }, :Object],
|
20
|
+
NilClass: [-> v { v.kind_of?(NilClass) }, :Object],
|
21
|
+
TrueClass: [-> v { v.kind_of?(TrueClass) }, :Object],
|
22
|
+
FalseClass: [-> v { v.kind_of?(FalseClass) }, :Object],
|
23
|
+
Regexp: [-> v { v.kind_of?(Regexp) }, :Object],
|
24
|
+
Time: [-> v { v.kind_of?(Time) }, :Object],
|
25
|
+
MatchData: [-> v { v.kind_of?(MatchData) }, :MatchData],
|
26
|
+
Proc: [-> v { v.kind_of?(Proc) }, :Object],
|
27
|
+
Module: [-> v { v.kind_of?(Module) }, :Object],
|
28
|
+
Class: [-> v { v.kind_of?(Class) }, :Module],
|
29
|
+
Numeric: [-> v { v.kind_of?(Numeric) }, :Object],
|
30
|
+
Float: [-> v { v.kind_of?(Float) }, :Numeric],
|
31
|
+
Integer: [-> v { v.kind_of?(Integer) }, :Numeric],
|
32
|
+
Bignum: [-> v { v.kind_of?(Bignum) }, :Integer],
|
33
|
+
Fixnum: [-> v { v.kind_of?(Fixnum) }, :Integer],
|
34
|
+
Bignum: [-> v { v.kind_of?(Bignum) }, :Integer],
|
35
|
+
Fixnum: [-> v { v.kind_of?(Fixnum) }, :Integer],
|
36
|
+
}.freeze
|
37
|
+
|
38
|
+
TypeConstraints.setup do
|
39
|
+
DEFAULT_TYPES.each do |key, array|
|
40
|
+
if array[1] # has parent
|
41
|
+
subtype(key, array[1]) do
|
42
|
+
constraint array[0]
|
43
|
+
end
|
44
|
+
else
|
45
|
+
type(key) do
|
46
|
+
constraint array[0]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/lib/type_constraints.rb
CHANGED
@@ -31,4 +31,19 @@ describe TypeConstraints::Registry do
|
|
31
31
|
expect(@r.metas[:ChildConstraint].nil?).to eq false
|
32
32
|
end
|
33
33
|
end
|
34
|
+
|
35
|
+
describe "#hash_type" do
|
36
|
+
before do
|
37
|
+
@r = TypeConstraints::Registry.new
|
38
|
+
@r.hash_type(:ChildConstraint, :test, :hoge)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "Sets meta object for metas" do
|
42
|
+
expect(@r.metas.size).to eq 1
|
43
|
+
end
|
44
|
+
it "Sets hash_type meta" do
|
45
|
+
expect(@r.metas[:ChildConstraint].check?({test: "hoge"})).to eq false
|
46
|
+
expect(@r.metas[:ChildConstraint].check?({test: "hoge", hoge: "test"})).to eq true
|
47
|
+
end
|
48
|
+
end
|
34
49
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: type_constraints
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- hisaichi5518
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-12-
|
11
|
+
date: 2014-12-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -69,10 +69,12 @@ files:
|
|
69
69
|
- lib/type_constraints.rb
|
70
70
|
- lib/type_constraints/meta.rb
|
71
71
|
- lib/type_constraints/registry.rb
|
72
|
+
- lib/type_constraints/type/default.rb
|
72
73
|
- lib/type_constraints/version.rb
|
73
74
|
- spec/spec_helper.rb
|
74
75
|
- spec/type_constraints/meta_spec.rb
|
75
76
|
- spec/type_constraints/registry_spec.rb
|
77
|
+
- spec/type_constraints/type/default_spec.rb
|
76
78
|
- spec/type_constraints_spec.rb
|
77
79
|
- type_constraints.gemspec
|
78
80
|
homepage: https://github.com/hisaichi5518/type_constraints
|
@@ -103,4 +105,5 @@ test_files:
|
|
103
105
|
- spec/spec_helper.rb
|
104
106
|
- spec/type_constraints/meta_spec.rb
|
105
107
|
- spec/type_constraints/registry_spec.rb
|
108
|
+
- spec/type_constraints/type/default_spec.rb
|
106
109
|
- spec/type_constraints_spec.rb
|