Class: RemoteTable::Transformer

Inherits:
Object
  • Object
show all
Defined in:
lib/remote_table/transformer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(t) ⇒ Transformer

Returns a new instance of Transformer.



4
5
6
7
# File 'lib/remote_table/transformer.rb', line 4

def initialize(t)
  @t = t
  @legacy_transformer_mutex = ::Mutex.new
end

Instance Attribute Details

#tObject (readonly)

Returns the value of attribute t.



3
4
5
# File 'lib/remote_table/transformer.rb', line 3

def t
  @t
end

Instance Method Details

#legacy_transformerObject



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/remote_table/transformer.rb', line 16

def legacy_transformer
  return @legacy_transformer[0] if @legacy_transformer.is_a?(::Array)
  @legacy_transformer_mutex.synchronize do
    return @legacy_transformer[0] if @legacy_transformer.is_a?(::Array)
    memo = if (transform_settings = t.transform_settings)
      transform_settings = transform_settings.symbolize_keys
      transform_settings[:class].new transform_settings.except(:class)
    end
    @legacy_transformer = [memo]
    memo
  end
end

#transform(row) ⇒ Object

eventually this will support a different way of specifying a transformer



9
10
11
12
13
14
15
# File 'lib/remote_table/transformer.rb', line 9

def transform(row)
  if legacy_transformer
    ::Array.wrap legacy_transformer.apply(row)
  else
    [row]
  end
end