Module: T
- Defined in:
- lib/emery/type.rb
Defined Under Namespace
Classes: ArrayType, HashType, NilableType, StringFormattedType, UnionType, UnknownType
Class Method Summary
collapse
Class Method Details
.array(item_type) ⇒ Object
147
148
149
|
# File 'lib/emery/type.rb', line 147
def T.array(item_type)
ArrayType.new(item_type)
end
|
.check(type, value) ⇒ Object
120
121
122
123
124
125
126
127
128
129
130
131
132
|
# File 'lib/emery/type.rb', line 120
def T.check(type, value)
if type.methods.include? :check
type.check(value)
else
if type != NilClass
T.check_not_nil(type, value)
end
if !value.is_a? type
raise TypeError.new("Value '#{value.inspect.to_s}' type is #{value.class} - #{type} is required")
end
end
return value
end
|
.check_not_nil(type, value) ⇒ Object
4
5
6
7
8
|
# File 'lib/emery/type.rb', line 4
def T.check_not_nil(type, value)
if value == nil
raise TypeError.new("Type #{type.to_s} does not allow nil value")
end
end
|
.check_var(var_name, type, value) ⇒ Object
159
160
161
162
163
164
165
166
|
# File 'lib/emery/type.rb', line 159
def T.check_var(var_name, type, value)
begin
check(type, value)
return value
rescue TypeError => e
raise TypeError.new("Variable #{var_name} type check failed, expected type: #{type.to_s}, value: #{value}")
end
end
|
.hash(key_type, value_type) ⇒ Object
151
152
153
|
# File 'lib/emery/type.rb', line 151
def T.hash(key_type, value_type)
HashType.new(key_type, value_type)
end
|
.instance_of?(type, value) ⇒ Boolean
134
135
136
137
138
139
140
141
|
# File 'lib/emery/type.rb', line 134
def T.instance_of?(type, value)
begin
T.check(type, value)
true
rescue TypeError
false
end
end
|
.nilable(value_type) ⇒ Object
143
144
145
|
# File 'lib/emery/type.rb', line 143
def T.nilable(value_type)
NilableType.new(value_type)
end
|
.union(*typdefs) ⇒ Object
155
156
157
|
# File 'lib/emery/type.rb', line 155
def T.union(*typdefs)
UnionType.new(*typdefs)
end
|