Class: NRSER::Types::Type
- Inherits:
-
Object
- Object
- NRSER::Types::Type
show all
- Defined in:
- lib/nrser/types/type.rb
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(**options) ⇒ Type
Returns a new instance of Type.
10
11
12
13
|
# File 'lib/nrser/types/type.rb', line 10
def initialize **options
@name = options[:name]
@from_s = options[:from_s]
end
|
Class Method Details
.short_name ⇒ Object
6
7
8
|
# File 'lib/nrser/types/type.rb', line 6
def self.short_name
name.split('::').last
end
|
Instance Method Details
#check(value) ⇒ Object
27
28
29
30
31
32
33
34
35
|
# File 'lib/nrser/types/type.rb', line 27
def check value
unless test value
raise TypeError.new NRSER.squish <<-END
value #{ value.inspect } failed check #{ self.inspect }
END
end
value
end
|
#default_name ⇒ Object
19
20
21
|
# File 'lib/nrser/types/type.rb', line 19
def default_name
self.class.short_name
end
|
#from_s(s) ⇒ Object
45
46
47
48
49
50
51
|
# File 'lib/nrser/types/type.rb', line 45
def from_s s
if @from_s.nil?
raise NoMethodError, "#from_s not defined"
end
check @from_s.(s)
end
|
#has_from_s? ⇒ Boolean
53
54
55
|
# File 'lib/nrser/types/type.rb', line 53
def has_from_s?
! @from_s.nil?
end
|
#name ⇒ Object
15
16
17
|
# File 'lib/nrser/types/type.rb', line 15
def name
@name || default_name
end
|
#respond_to?(name, include_all = false) ⇒ Boolean
37
38
39
40
41
42
43
|
# File 'lib/nrser/types/type.rb', line 37
def respond_to? name, include_all = false
if name == :from_s || name == 'from_s'
has_from_s?
else
super name, include_all
end
end
|
#test(value) ⇒ Object
23
24
25
|
# File 'lib/nrser/types/type.rb', line 23
def test value
raise NotImplementedError
end
|
#to_s ⇒ Object
57
58
59
|
# File 'lib/nrser/types/type.rb', line 57
def to_s
"<Type:#{ name }>"
end
|