module Rrxcell::Addressing
Constants
- ALPHABET_CHARCTORS
Public Class Methods
cell_address_to_column_position(cell_address)
click to toggle source
# File lib/rrxcell/addressing.rb, line 5 def cell_address_to_column_position(cell_address) v = 0 factor = 1 column_string(cell_address).reverse.each_char do |char| _v = char.downcase.ord - "a".ord + 1 v += ((_v * factor) - 1) factor += ALPHABET_CHARCTORS end v end
cell_address_to_row_column_position(cell_address)
click to toggle source
# File lib/rrxcell/addressing.rb, line 18 def cell_address_to_row_column_position(cell_address) [ cell_address_to_row_position(cell_address), cell_address_to_column_position(cell_address) ] end
cell_address_to_row_position(cell_address)
click to toggle source
# File lib/rrxcell/addressing.rb, line 25 def cell_address_to_row_position(cell_address) row_string(cell_address).to_i - 1 end
cell_address_to_sheet_position(cell_address, book = nil)
click to toggle source
# File lib/rrxcell/addressing.rb, line 29 def cell_address_to_sheet_position(cell_address, book = nil) validate_book!(book) book.sheet_names.index(sheet_string(cell_address)) end
cell_address_to_sheet_row_column_position(cell_address, book = nil)
click to toggle source
# File lib/rrxcell/addressing.rb, line 34 def cell_address_to_sheet_row_column_position(cell_address, book = nil) validate_book!(book) [ cell_address_to_sheet_position(cell_address, book), cell_address_to_row_column_position(cell_address) ].flatten end
Private Class Methods
column_string(cell_address)
click to toggle source
# File lib/rrxcell/addressing.rb, line 44 def column_string(cell_address) validate_cell_address!(cell_address) cell_address.scan(/\!*([[:alpha:]]+)/).flatten.last end
row_string(cell_address)
click to toggle source
# File lib/rrxcell/addressing.rb, line 49 def row_string(cell_address) validate_cell_address!(cell_address) cell_address.match(/[0-9]+\z/).to_s end
sheet_string(cell_address)
click to toggle source
# File lib/rrxcell/addressing.rb, line 54 def sheet_string(cell_address) validate_cell_address!(cell_address) cell_address.scan(/\A(.+)\!/).flatten.first end
validate_book!(book)
click to toggle source
# File lib/rrxcell/addressing.rb, line 68 def validate_book!(book) raise "invalid Rrxcell::Book" unless book.is_a?(Rrxcell::Book) true end
validate_cell_address!(cell_address)
click to toggle source
# File lib/rrxcell/addressing.rb, line 59 def validate_cell_address!(cell_address) return true if cell_address.match(/\A[[:alpha:]]+[0-9]+\z/) unless cell_address.match(/\A.+\![[:alpha:]]+[0-9]+\z/) raise "invalid address" end true end