Class: Spread2RDF::Mapping::Column

Inherits:
Element
  • Object
show all
Includes:
Statement
Defined in:
lib/spread2rdf/mapping/column.rb

Instance Attribute Summary

Attributes inherited from Element

#parent, #schema

Instance Method Summary collapse

Methods inherited from Element

#empty?, #graph, #to_s

Constructor Details

#initialize(sheet, parent) ⇒ Column

Returns a new instance of Column.



11
12
13
14
15
# File 'lib/spread2rdf/mapping/column.rb', line 11

def initialize(sheet, parent)
  super
  @cells = {}
  map(row_range)
end

Instance Method Details

#cell(coord) ⇒ Object



50
51
52
53
# File 'lib/spread2rdf/mapping/column.rb', line 50

def cell(coord)
  coord = cell_coord(coord)
  @cells[coord.to_sym] # TODO: search @sub_sheet_mappings also
end

#cell!(coord) ⇒ Object



55
56
57
58
# File 'lib/spread2rdf/mapping/column.rb', line 55

def cell!(coord)
  coord = cell_coord(coord)
  @cells[coord.to_sym] ||= Cell.new(schema, self, coord.row)
end

#cell_coord(row) ⇒ Object



33
34
35
36
37
38
39
40
# File 'lib/spread2rdf/mapping/column.rb', line 33

def cell_coord(row)
  case row
    when Integer then Coord[column: schema.coord, row: row]
    when Coord   then Coord
    when Hash    then Coord[row]
    else raise ArgumentError
  end
end

#cellsObject Also known as: _children_

Mapping::Element structure



45
46
47
# File 'lib/spread2rdf/mapping/column.rb', line 45

def cells
  @cells.values
end

#map(range) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
# File 'lib/spread2rdf/mapping/column.rb', line 17

def map(range)
  #puts "mapping #{self} in #{range} ..."
  case range
    when Integer
      cell = cell!(range)
      statements_to_object(cell.object) unless cell.empty?
    when Range
      range.each { |row| self.map(row) }
    else raise ArgumentError
  end
end

#objectsObject



29
30
31
# File 'lib/spread2rdf/mapping/column.rb', line 29

def objects
  cells.map(&:object)
end