class Bayonet::NodeCreation

Attributes

cell_label[R]
sheet[R]

Public Class Methods

new(cell_label, sheet) click to toggle source
# File lib/bayonet/node_creation.rb, line 6
def initialize(cell_label, sheet)
  @cell_label = cell_label
  @sheet      = sheet
end

Public Instance Methods

get_or_create_cell_node() click to toggle source
# File lib/bayonet/node_creation.rb, line 11
def get_or_create_cell_node
  unless has_cell_node?
    create_nodes
  end

  cell_node
end

Private Instance Methods

cell_node() click to toggle source
# File lib/bayonet/node_creation.rb, line 25
def cell_node
  @cell_node ||= xml.at_css("c[r=\"#{cell_label}\"]")
end
create_cell_node() click to toggle source
# File lib/bayonet/node_creation.rb, line 49
def create_cell_node
  create_node('c', row_node, cell_label)
end
create_node(tag, parent_node, value) click to toggle source
# File lib/bayonet/node_creation.rb, line 57
def create_node(tag, parent_node, value)
  Nokogiri::XML::Node.new(tag, parent_node).tap do |node|
    node['r'] = value
    parent_node.add_child(node)
  end
end
create_nodes() click to toggle source
# File lib/bayonet/node_creation.rb, line 70
def create_nodes
  if has_row_node?
    create_cell_node
  else
    create_row_node_with_cell_node
  end
end
create_row_node() click to toggle source
# File lib/bayonet/node_creation.rb, line 53
def create_row_node
  create_node('row', sheet_data_node, row_number)
end
create_row_node_with_cell_node() click to toggle source
# File lib/bayonet/node_creation.rb, line 64
def create_row_node_with_cell_node
  row_node  = create_row_node
  cell_node = create_cell_node
  row_node.add_child(cell_node)
end
has_cell_node?() click to toggle source
# File lib/bayonet/node_creation.rb, line 29
def has_cell_node?
  !cell_node.nil?
end
has_row_node?() click to toggle source
# File lib/bayonet/node_creation.rb, line 37
def has_row_node?
  !row_node.nil?
end
row_node() click to toggle source
# File lib/bayonet/node_creation.rb, line 33
def row_node
  @row_node ||= xml.at_css("row[r=\"#{row_number}\"]")
end
row_number() click to toggle source
# File lib/bayonet/node_creation.rb, line 41
def row_number
  @row_number ||= cell_label.gsub(/[^\d]/, '')
end
sheet_data_node() click to toggle source
# File lib/bayonet/node_creation.rb, line 45
def sheet_data_node
  @sheet_data_node ||= xml.at_css('sheetData')
end
xml() click to toggle source
# File lib/bayonet/node_creation.rb, line 21
def xml
  sheet.xml
end