Class: Ooz::Common::BaseClass
- Inherits:
-
Object
- Object
- Ooz::Common::BaseClass
- Defined in:
- lib/ooz/common/base_class.rb
Direct Known Subclasses
Class Method Summary collapse
- .overridable_const(method, value) ⇒ Object
- .passthrough(*methods, to:) ⇒ Object
- .passthrough_arr(method, to:, klass:) ⇒ Object
- .passthrough_cls(method, to:, klass:) ⇒ Object
Class Method Details
.overridable_const(method, value) ⇒ Object
6 7 8 9 10 11 12 13 14 |
# File 'lib/ooz/common/base_class.rb', line 6 def overridable_const (method, value) method = method.to_s define_singleton_method method do value end define_method method do self.class.send(method) end end |
.passthrough(*methods, to:) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/ooz/common/base_class.rb', line 16 def passthrough(*methods, to:) methods.each do |method| method = method.to_s define_method method do send(to)[method] end define_method "#{method}=" do |value| send(to)[method] = value end end end |
.passthrough_arr(method, to:, klass:) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/ooz/common/base_class.rb', line 43 def passthrough_arr(method, to:, klass:) method = method.to_s var = "@#{method}" define_method method do return instance_variable_get(var) if instance_variable_defined?(var) send(to)[method] = send(to)[method] || [] klass = klass.is_a?(Class)? klass : self.send(klass) arr = send(to)[method].map do |e| klass.new(e, root: self) end instance_variable_set(var, arr) arr end end |
.passthrough_cls(method, to:, klass:) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/ooz/common/base_class.rb', line 28 def passthrough_cls(method, to:, klass:) method = method.to_s var = "@#{method}" define_method method do return instance_variable_get(var) if instance_variable_defined?(var) send(to)[method] = send(to)[method] || {} klass = klass.is_a?(Class)? klass : self.send(klass) obj = klass.new(send(to)[method], root: self) instance_variable_set(var, obj) obj end end |