Class: CsvSerializer::Definition

Inherits:
Object
  • Object
show all
Defined in:
lib/csv_serializer/definition.rb,
lib/csv_serializer/definition/all_column.rb

Overview

Represents definition of csv columns.

Direct Known Subclasses

AllColumn, FunctionArray, FunctionHash, SymbolArray

Defined Under Namespace

Classes: AllColumn, FunctionArray, FunctionHash, SymbolArray

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(records, array_or_hash = nil) ⇒ Definition

Returns a new instance of Definition.



18
19
20
21
# File 'lib/csv_serializer/definition.rb', line 18

def initialize(records, array_or_hash = nil)
  @records = records
  @array_or_hash = array_or_hash
end

Instance Attribute Details

#recordsObject (readonly)

Returns the value of attribute records.



4
5
6
# File 'lib/csv_serializer/definition.rb', line 4

def records
  @records
end

Class Method Details

.build(array, hash, records) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
# File 'lib/csv_serializer/definition.rb', line 6

def self.build(array, hash, records)
  if array.blank? && hash.blank?
    AllColumn.new(records)
  elsif array.blank?
    FunctionHash.new(records, hash)
  elsif array.all?(Symbol)
    SymbolArray.new(records, array)
  else
    FunctionArray.new(records, array)
  end
end

Instance Method Details

#definitionsObject



23
24
25
# File 'lib/csv_serializer/definition.rb', line 23

def definitions
  @array_or_hash
end

#headerObject



35
36
37
# File 'lib/csv_serializer/definition.rb', line 35

def header
  column_names.map { records.human_attribute_name(_1) }
end

#serializerObject



27
28
29
# File 'lib/csv_serializer/definition.rb', line 27

def serializer
  Serializer.new(self)
end

#target_recordsObject



31
32
33
# File 'lib/csv_serializer/definition.rb', line 31

def target_records
  records.all
end