Class: RubyXL::ColumnRanges

Inherits:
OOXMLContainerObject show all
Defined in:
lib/rubyXL/objects/column_range.rb

Instance Attribute Summary

Attributes included from OOXMLObjectInstanceMethods

#local_namespaces

Instance Method Summary collapse

Methods inherited from OOXMLContainerObject

define_count_attribute, #initialize, #inspect

Methods included from OOXMLObjectInstanceMethods

#==, included, #index_in_collection, #initialize, #write_xml

Constructor Details

This class inherits a constructor from RubyXL::OOXMLContainerObject

Instance Method Details

#before_write_xmlObject


84
85
86
87
# File 'lib/rubyXL/objects/column_range.rb', line 84

def before_write_xml
  self.sort_by!{ |r| r.min }
  !(self.empty?)
end

#get_range(col_index) ⇒ Object

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


44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/rubyXL/objects/column_range.rb', line 44

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) ⇒ Object


80
81
82
# File 'lib/rubyXL/objects/column_range.rb', line 80

def insert_column(col_index)
  self.each { |range| range.insert_column(col_index) }
end

#locate_range(col_index) ⇒ Object


76
77
78
# File 'lib/rubyXL/objects/column_range.rb', line 76

def locate_range(col_index)
  self.find { |range| range.include?(col_index) }
end