tsalzer-typesafe 0.0.1 → 0.0.2
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/VERSION +1 -1
- data/lib/typesafe.rb +10 -1
- data/spec/spec_helper.rb +2 -1
- data/typesafe.gemspec +2 -2
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/lib/typesafe.rb
CHANGED
@@ -30,7 +30,7 @@ module TypeSafe
|
|
30
30
|
# this class or object must be kind of a given class.
|
31
31
|
# Method returns <tt>self</tt> unless it raises a TypeError.
|
32
32
|
def must_be_kind_of(clss, &blk)
|
33
|
-
if clss.kind_of?(
|
33
|
+
if clss.kind_of?(Class)
|
34
34
|
matched = if self.kind_of?(Class)
|
35
35
|
# classes are expected to "descend" from comparator
|
36
36
|
if self != clss
|
@@ -50,6 +50,15 @@ module TypeSafe
|
|
50
50
|
raise TypeError.new("#{self} must be of type #{clss}")
|
51
51
|
end
|
52
52
|
end
|
53
|
+
elsif clss.kind_of?(Module)
|
54
|
+
# check if the given module is included
|
55
|
+
unless self.included_modules.include?(clss)
|
56
|
+
if blk
|
57
|
+
return yield self.class
|
58
|
+
else
|
59
|
+
raise TypeError.new("#{self} does not include module #{clss}")
|
60
|
+
end
|
61
|
+
end
|
53
62
|
else
|
54
63
|
raise "class to check #{self} for must be a Class or Module, but is #{clss}"
|
55
64
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -12,6 +12,7 @@ end
|
|
12
12
|
|
13
13
|
# plain module
|
14
14
|
module ModA
|
15
|
+
def moda_method ; end
|
15
16
|
end
|
16
17
|
# plain class
|
17
18
|
class ClassA
|
@@ -24,7 +25,7 @@ class ClassC
|
|
24
25
|
extend ModA
|
25
26
|
end
|
26
27
|
# plain class, includes module ModA, thereby not descending ModA
|
27
|
-
class
|
28
|
+
class ClassD
|
28
29
|
include ModA
|
29
30
|
end
|
30
31
|
|
data/typesafe.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{typesafe}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Till Salzer"]
|
12
|
-
s.date = %q{2009-08-
|
12
|
+
s.date = %q{2009-08-30}
|
13
13
|
s.description = %q{Simplifies typesafe development by providing the additional
|
14
14
|
methods Object#must_by_kind_of ad Object#must_be_a.}
|
15
15
|
s.email = %q{till.salzer@googlemail.com}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tsalzer-typesafe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Till Salzer
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-08-
|
12
|
+
date: 2009-08-30 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|