Module: TypeStruct::ClassMethods
- Defined in:
- lib/type_struct.rb
Instance Method Summary collapse
- #definition ⇒ Object
- #freeze ⇒ Object
- #from_hash(arg) ⇒ Object
- #members ⇒ Object
- #type(k) ⇒ Object
- #valid?(k, v) ⇒ Boolean
Instance Method Details
#definition ⇒ Object
80 81 82 |
# File 'lib/type_struct.rb', line 80 def definition const_get(:DEFINITION) end |
#freeze ⇒ Object
96 97 98 99 100 101 102 103 |
# File 'lib/type_struct.rb', line 96 def freeze definition.each do |k, _| define_method("#{k}=") do |*| raise RuntimeError, "can't modify frozen #{self}##{k}" end end super end |
#from_hash(arg) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/type_struct.rb', line 65 def from_hash(arg) unless h = Hash.try_convert(arg) raise TypeError, "#{self}.from_hash only accept Hash got `#{h.class}'" end args = {} errors = [] h.each do |key, value| key = key.to_sym t = type(key) args[key] = try_convert(t, key, value, errors) end raise MultiTypeError, errors unless errors.empty? new(args) end |
#members ⇒ Object
84 85 86 |
# File 'lib/type_struct.rb', line 84 def members definition.keys end |
#type(k) ⇒ Object
88 89 90 |
# File 'lib/type_struct.rb', line 88 def type(k) definition[k] end |
#valid?(k, v) ⇒ Boolean
92 93 94 |
# File 'lib/type_struct.rb', line 92 def valid?(k, v) definition[k] === v end |