Class: AMA::Entity::Mapper::Engine

Inherits:
Object
  • Object
show all
Includes:
Mixin::Errors
Defined in:
lib/ama-entity-mapper/engine.rb,
lib/ama-entity-mapper/engine/recursive_mapper.rb,
lib/ama-entity-mapper/engine/recursive_normalizer.rb

Overview

Main, user-unfriendly, library-entrypoint class. Provides interface for mapping one type into another.

Defined Under Namespace

Classes: RecursiveMapper, RecursiveNormalizer

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Mixin::Errors

#compliance_error, #mapping_error, #raise_if_internal, #validation_error

Constructor Details

#initialize(registry = nil) ⇒ Engine

Returns a new instance of Engine.

Parameters:

  • (defaults to: nil)


31
32
33
34
35
36
# File 'lib/ama-entity-mapper/engine.rb', line 31

def initialize(registry = nil)
  @registry = registry || Type::Registry.new
  @resolver = Type::Resolver.new(@registry)
  @normalizer = RecursiveNormalizer.new(@registry)
  @mapper = RecursiveMapper.new(@registry)
end

Instance Attribute Details

#registryObject (readonly)

Returns the value of attribute registry.



25
26
27
# File 'lib/ama-entity-mapper/engine.rb', line 25

def registry
  @registry
end

#resolverObject (readonly)

Returns the value of attribute resolver.



28
29
30
# File 'lib/ama-entity-mapper/engine.rb', line 28

def resolver
  @resolver
end

Instance Method Details

#[](klass) ⇒ Object

Parameters:



66
67
68
# File 'lib/ama-entity-mapper/engine.rb', line 66

def [](klass)
  @registry[klass]
end

#map(source, *types, **context_options) ⇒ Object

Parameters:



41
42
43
44
45
# File 'lib/ama-entity-mapper/engine.rb', line 41

def map(source, *types, **context_options)
  context = create_context(context_options)
  types = normalize_types(types, context)
  @mapper.map(source, types, context)
end

#normalize(object, **context_options) ⇒ Object

Normalizes object to primitive data structures.

Parameters:



56
57
58
# File 'lib/ama-entity-mapper/engine.rb', line 56

def normalize(object, **context_options)
  @normalizer.normalize(object, create_context(context_options))
end

#register(klass) ⇒ Object

Parameters:



61
62
63
# File 'lib/ama-entity-mapper/engine.rb', line 61

def register(klass)
  @registry[klass] || @registry.register(Type::Analyzer.analyze(klass))
end

#resolve(definition) ⇒ Object

Resolves provided definition, creating type hierarchy.

Parameters:



49
50
51
# File 'lib/ama-entity-mapper/engine.rb', line 49

def resolve(definition)
  @resolver.resolve(definition)
end