Class: RubyXL::ColumnRanges
- Inherits:
-
OOXMLContainerObject
- Object
- Array
- OOXMLContainerObject
- RubyXL::ColumnRanges
- Defined in:
- lib/rubyXL/objects/column_range.rb
Instance Attribute Summary
Attributes included from OOXMLObjectInstanceMethods
Instance Method Summary collapse
- #before_write_xml ⇒ Object
-
#get_range(col_index) ⇒ Object
Locate an existing column range, make a new one if not found, or split existing column range into multiples.
- #insert_column(col_index) ⇒ Object
- #locate_range(col_index) ⇒ Object
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_xml ⇒ Object
88 89 90 91 |
# File 'lib/rubyXL/objects/column_range.rb', line 88 def before_write_xml self.sort_by!(&: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.
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 75 76 77 78 |
# File 'lib/rubyXL/objects/column_range.rb', line 48 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(width: RubyXL::ColumnRange.chars2raw(RubyXL::ColumnRange::DEFAULT_WIDTH)) 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 prior_range = old_range.dup prior_range.max = col_index # col_num - 1 self << prior_range 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
84 85 86 |
# File 'lib/rubyXL/objects/column_range.rb', line 84 def insert_column(col_index) self.each { |range| range.insert_column(col_index) } end |
#locate_range(col_index) ⇒ Object
80 81 82 |
# File 'lib/rubyXL/objects/column_range.rb', line 80 def locate_range(col_index) self.find { |range| range.include?(col_index) } end |