Module: KeyMapable

Defined in:
lib/key_mapable.rb,
lib/key_mapable/version.rb

Defined Under Namespace

Classes: Accessor, Mapper

Constant Summary collapse

VERSION =
"0.6.0"

Instance Method Summary collapse

Instance Method Details

#define_map(method_name, resolve: ->(val) { val }, subject: :itself, access: :method, &block) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/key_mapable.rb', line 8

def define_map(method_name,
               resolve: ->(val) { val },
               subject: :itself,
               access: :method, &block)
  define_method(method_name) do
    value = public_send(subject)
    accessor = Accessor.for(access)
    mapper = Mapper.new(value, accessor)
    mapper.instance_eval(&block)
    resolve.call(mapper.structure)
  end
end