Sha256: cb27c27d119d7fabc8dda5bfb501e2e24dcd210edb65d7d1c537f660496b9c65
Contents?: true
Size: 1.18 KB
Versions: 1
Compression:
Stored size: 1.18 KB
Contents
module Myrrha module Domain class Impl < Module def initialize(component_names) @component_names = component_names.freeze define_initialize define_component_readers include_value_methods end def included(clazz) define_component_names_on(clazz) define_coercion_methods_on(clazz) super end private def define_initialize component_names = @component_names define_method(:initialize){|*args| component_names.zip(args).each do |n,arg| instance_variable_set(:"@#{n}", arg) end } end def define_component_readers @component_names.each do |n| define_method(n){ instance_variable_get(:"@#{n}") } end end def include_value_methods module_eval{ include ValueMethods } end def define_component_names_on(clazz) component_names = @component_names clazz.define_singleton_method(:component_names){ component_names } end def define_coercion_methods_on(clazz) clazz.extend(CoercionMethods) end end # class Impl end # module Domain end # module Myrrha
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
myrrha-2.0.0 | lib/myrrha/domain/impl.rb |