Completed
Push — dev ( 36eb97...6cb2fc )
by Fike
01:01
created

Factory.create()   A

Complexity

Conditions 3

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 9
rs 9.6666
cc 3
1
# frozen_string_literal: true
2
3
require_relative '../factory'
4
require_relative '../../mixin/errors'
5
6
module AMA
7
  module Entity
8
    class Mapper
9
      module API
10
        module Default
11
          # Default entity factory
12
          class Factory < API::Factory
13
            include Mixin::Errors
14
15
            INSTANCE = new
16
17
            # @param [AMA::Entity::Mapper::Type] type
18
            # @param [Object] _data
19
            # @param [AMA::Entity::Mapper::Context] context
20
            def create(type, _data = nil, context = nil)
21
              type.type.new
22
            rescue StandardError => e
23
              message = "Failed to instantiate #{type} directly from class"
24
              if e.is_a?(ArgumentError)
25
                message += '. Does it have parameterless #initialize() method?'
26
              end
27
              mapping_error(message, parent: e, context: context)
28
            end
29
          end
30
        end
31
      end
32
    end
33
  end
34
end
35