Sha256: deef986072cc47d18a009a93fcee6ac2967cd7603dfba55fe51875a8a31ccfe3

Contents?: true

Size: 1.69 KB

Versions: 17

Compression:

Stored size: 1.69 KB

Contents

module Axlsx

  # This class manages the dimensions for a worksheet.
  # While this node is optional in the specification some readers like 
  # LibraOffice require this node to render the sheet
  class Dimension

    # the default value for the first cell in the dimension
    # @return [String]
    def self.default_first
      @@default_first ||= 'A1'
    end

    # the default value for the last cell in the dimension
    # @return [String]
    def self.default_last
      @@default_last ||= 'AA200'
    end

    # Creates a new dimension object
    # @param[Worksheet] worksheet - the worksheet this dimension applies
    # to.
    def initialize(worksheet)
      raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
      @worksheet = worksheet
    end

    attr_reader :worksheet

    # the full refernece for this dimension
    # @return [String]
    def sqref
      "#{first_cell_reference}:#{last_cell_reference}"
    end 

    # serialize the object
    # @return [String]
    def to_xml_string(str = '')
      return if worksheet.rows.empty?
      str << "<dimension ref=\"%s\"></dimension>" % sqref
    end

    # The first cell in the dimension
    # @return [String]
    def first_cell_reference
      dimension_reference(worksheet.rows.first.first, Dimension.default_first)
    end

    # the last cell in the dimension
    # @return [String]
    def last_cell_reference
      dimension_reference(worksheet.rows.last.last, Dimension.default_last)
    end

    private

    # Returns the reference of a cell or the default specified
    # @return [String]
    def dimension_reference(cell, default)
      return default unless cell.respond_to?(:r)
      cell.r
    end
  end
end

Version data entries

17 entries across 17 versions & 6 rubygems

Version Path
caxlsx-3.3.0 lib/axlsx/workbook/worksheet/dimension.rb
caxlsx-3.1.1 lib/axlsx/workbook/worksheet/dimension.rb
caxlsx-3.1.0 lib/axlsx/workbook/worksheet/dimension.rb
bonio-axlsx-2.2.3 lib/axlsx/workbook/worksheet/dimension.rb
caxlsx-3.0.4 lib/axlsx/workbook/worksheet/dimension.rb
caxlsx-3.0.3 lib/axlsx/workbook/worksheet/dimension.rb
caxlsx-3.0.2 lib/axlsx/workbook/worksheet/dimension.rb
caxlsx-3.0.1 lib/axlsx/workbook/worksheet/dimension.rb
caxlsx-3.0.0 lib/axlsx/workbook/worksheet/dimension.rb
axlsx-alt-3.0.1 lib/axlsx/workbook/worksheet/dimension.rb
axlsx-alt-3.0.0 lib/axlsx/workbook/worksheet/dimension.rb
axlsx-3.0.0.pre lib/axlsx/workbook/worksheet/dimension.rb
bonio-axlsx-2.2.2 lib/axlsx/workbook/worksheet/dimension.rb
bonio-axlsx-2.2.1 lib/axlsx/workbook/worksheet/dimension.rb
dg-axlsx-2.1.0 lib/axlsx/workbook/worksheet/dimension.rb
axlsx-2.1.0.pre lib/axlsx/workbook/worksheet/dimension.rb
l_axlsx-2.0.1 lib/axlsx/workbook/worksheet/dimension.rb