Module: Transform::Read

Extended by:
Transform
Defined in:
lib/transform/read.rb

Class Method Summary collapse

Methods included from Transform

assure_format, assure_mode, assure_transformer, format, format?, format_accessor?, get_format, get_transformer, implemented?, intermediate?, mode?, subject_const, transform_const?, transformer, transformer?, transformer_const?

Class Method Details

.call(raw_data, format_name, cls) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/transform/read.rb', line 13

def self.call(raw_data, format_name, cls)
  if format_name.instance_of?(Class) && cls.instance_of?(Symbol)
    cls, format_name = format_name, cls
  end

  logger.trace { "Reading (Format Name: #{format_name.inspect})" }
  logger.trace(tags: [:data, :raw_data]) { raw_data.pretty_inspect }

  format = format(cls, format_name)

  assure_mode(format, mode)
  raw_data = format.read raw_data

  transformed = instance(raw_data, cls)

  logger.info { "Read (Format Name: #{format_name.inspect})" }
  logger.debug(tags: [:data, :transformed]) { transformed.pretty_inspect }

  transformed
end

.instance(raw_data, cls) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/transform/read.rb', line 34

def self.instance(raw_data, cls)
  logger.trace { "Transforming raw data to instance" }
  logger.trace(tags: [:data, :raw_data]) { raw_data.pretty_inspect }

  transformer = transformer(cls)
  assure_mode(transformer, intermediate)

  method = transformer.method(:instance)

  instance = nil
  case method.parameters.length
  when 1
    instance = transformer.instance(raw_data)
  when 2
    instance = transformer.instance(raw_data, cls)
  end

  logger.debug { "Transformed raw data to instance" }
  logger.debug(tags: [:data, :instance]) { instance.pretty_inspect }

  instance
end

.intermediateObject



9
10
11
# File 'lib/transform/read.rb', line 9

def self.intermediate
  :instance
end

.loggerObject



57
58
59
# File 'lib/transform/read.rb', line 57

def self.logger
  @logger ||= Log.get(self)
end

.modeObject



5
6
7
# File 'lib/transform/read.rb', line 5

def self.mode
  :read
end