Skip to content

Instantly share code, notes, and snippets.

@mbj
Last active January 4, 2016 03:29
Show Gist options
  • Save mbj/8562152 to your computer and use it in GitHub Desktop.
Save mbj/8562152 to your computer and use it in GitHub Desktop.
morpher
require 'morpher'
extend Morpher::NodeHelpers
class Address
include Anima.new(:street)
end
class Person
include Anima.new(:address)
end
node = s(:block,
s(:guard, s(:primitive, Hash)),
s(:hash_transform,
s(:symbolize_key, 'street',
s(:guard, s(:primitive, String))
),
),
s(:anima_load, Address)
)
ADDRESS_EVALUATOR = Morpher.evaluator(node)
# like above
node = s(:block,
s(:guard, s(:primitive, Hash)),
s(:hash_transform,
s(:symbolize_key, 'address',
ADDRESS_EVALUATOR.node
),
),
s(:anima_load, Person)
)
PERSON_EVALUATOR = Morpher.evaluator(node)
# DSL idea:
PERSON_LOADER = Morper.build do
hash do
load_str_symbol :address do
use(ADDRESS_EVALUATOR)
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment