class RubyXL::ColumnRanges

Public Instance Methods

before_write_xml() click to toggle source
# File lib/rubyXL/objects/column_range.rb, line 85
def before_write_xml
  self.sort_by!{ |r| r.min }
  !(self.empty?)
end
get_range(col_index) click to toggle source

Locate an existing column range, make a new one if not found, or split existing column range into multiples.

# File lib/rubyXL/objects/column_range.rb, line 45
def get_range(col_index)
  col_num = col_index + 1

  old_range = self.locate_range(col_index)

  if old_range.nil? then
    new_range = RubyXL::ColumnRange.new
  else
    if old_range.min == col_num && old_range.max == col_num then
      return old_range # Single column range, OK to change in place
    elsif old_range.min == col_num then
      new_range = old_range.dup
      old_range.min += 1
    elsif old_range.max == col_num then
      new_range = old_range.dup
      old_range.max -= 1
    else
      range_before = old_range.dup
      range_before.max = col_index # col_num - 1
      self << range_before

      old_range.min = col_num + 1

      new_range = RubyXL::ColumnRange.new
    end
  end

  new_range.min = new_range.max = col_num
  self << new_range
  return new_range
end
insert_column(col_index) click to toggle source
# File lib/rubyXL/objects/column_range.rb, line 81
def insert_column(col_index)
  self.each { |range| range.insert_column(col_index) }
end
locate_range(col_index) click to toggle source
# File lib/rubyXL/objects/column_range.rb, line 77
def locate_range(col_index)
  self.find { |range| range.include?(col_index) }
end