Module: OOP::ValueObject::ClassMethods
- Defined in:
- lib/oop/value_object.rb
Instance Method Summary collapse
- #constructor(*parts, &block) ⇒ Object
- #import(imports) ⇒ Object
- #message(meth, &block) ⇒ Object
- #super_mega_private_oop_method_value? ⇒ Boolean
Instance Method Details
#constructor(*parts, &block) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/oop/value_object.rb', line 27 def constructor(*parts, &block) define_method(:initialize) do |opts={}| opts ||= {} if block block.call(opts) end extra_args = (opts.keys - parts) missing_args = parts.select do |k| !opts.has_key?(k) && !opts.has_key?(k) end if extra_args.any? raise "extra args: #{extra_args}" elsif missing_args.any? raise "missing args: #{missing_args}" end @opts = opts; opts.each do |k, v| k = k.to_sym @opts[BasicRules.cast_to_value(k)] = BasicRules.cast_to_value(v) end end parts.each do |p| define_method(p.to_sym) do @opts[p] end end end |
#import(imports) ⇒ Object
19 20 21 22 23 24 25 |
# File 'lib/oop/value_object.rb', line 19 def import(imports) imports.each do |name, import| define_method(name.to_sym) do BasicRules.cast_to_value(import) end end end |
#message(meth, &block) ⇒ Object
6 7 8 9 10 11 12 13 |
# File 'lib/oop/value_object.rb', line 6 def (meth, &block) define_method(meth) do |*args, &blk| args = args.map do |arg| BasicRules.cast_to_value(arg) end BasicRules.cast_to_value(self.instance_exec(*(args + [blk]), &block)) end end |
#super_mega_private_oop_method_value? ⇒ Boolean
15 16 17 |
# File 'lib/oop/value_object.rb', line 15 def super_mega_private_oop_method_value? true end |