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(name: nil, from_s: nil) ⇒ Type
Instantiate a new ‘NRSER::Types::Type`.
28
29
30
31
|
# File 'lib/nrser/types/type.rb', line 28
def initialize name: nil, from_s: nil
@name = name
@from_s = 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, &make_fail_message) ⇒ Object
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/nrser/types/type.rb', line 46
def check value, &make_fail_message
return value if test value
msg = if make_fail_message
make_fail_message.call type: self, value: value
else
NRSER.squish <<-END
value #{ value.inspect } failed check #{ self.to_s }
END
end
raise TypeError.new msg
end
|
#default_name ⇒ Object
38
39
40
|
# File 'lib/nrser/types/type.rb', line 38
def default_name
self.class.short_name
end
|
#from_s(s) ⇒ Object
69
70
71
72
73
74
75
|
# File 'lib/nrser/types/type.rb', line 69
def from_s s
if @from_s.nil?
raise NoMethodError, "#from_s not defined"
end
check @from_s.call( s )
end
|
#has_from_s? ⇒ Boolean
77
78
79
|
# File 'lib/nrser/types/type.rb', line 77
def has_from_s?
! @from_s.nil?
end
|
#name ⇒ Object
34
35
36
|
# File 'lib/nrser/types/type.rb', line 34
def name
@name || default_name
end
|
#respond_to?(name, include_all = false) ⇒ Boolean
61
62
63
64
65
66
67
|
# File 'lib/nrser/types/type.rb', line 61
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
42
43
44
|
# File 'lib/nrser/types/type.rb', line 42
def test value
raise NotImplementedError
end
|
#to_s ⇒ Object
81
82
83
|
# File 'lib/nrser/types/type.rb', line 81
def to_s
"`Type: #{ name }`"
end
|