Module: ColumnMapper

Defined in:
lib/yap/column_mapper.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#_api_aliasesObject (readonly)

Returns the value of attribute _api_aliases.



2
3
4
# File 'lib/yap/column_mapper.rb', line 2

def _api_aliases
  @_api_aliases
end

Instance Method Details

#api_aliases(aliases = nil, &block) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/yap/column_mapper.rb', line 3

def api_aliases(aliases = nil, &block)
  raise "Aliases already defined. Make sure to invoke #{__method__} only once." if defined? @_api_aliases

  api_aliases_hash(aliases) if aliases.present?

  if block_given?
    raise ArgumentError, 'Only one of the following allowed: Hash of aliases or block.' if aliases.present?

    @_api_aliases = block
  end

  nil
end

#api_aliases_hash(aliases) ⇒ Object

Raises:

  • (ArgumentError)


17
18
19
20
21
22
23
# File 'lib/yap/column_mapper.rb', line 17

def api_aliases_hash(aliases)
  raise ArgumentError, "Expected first argument to be a Hash, got #{aliases.class.name}." unless aliases.is_a? Hash

  @_api_aliases = aliases.symbolize_keys

  nil
end

#map_column(name) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/yap/column_mapper.rb', line 25

def map_column(name)
  actual_column = name if column_names.include?(name)

  column_alias = if _api_aliases.is_a? Hash
    _api_aliases[name.to_sym]
  elsif _api_aliases.is_a? Proc
    _api_aliases.call(name)
  end

  result = column_alias || actual_column
  return if result.blank?

  result.to_s
end