Module: OOXL::Util

Included in:
Cell, Sheet, Sheet::DataValidation
Defined in:
lib/ooxl/util.rb

Constant Summary collapse

COLUMN_LETTERS =
[nil] + ('A'..'ZZZZ').to_a

Instance Method Summary collapse

Instance Method Details

#column_letter_to_number(column_letter) ⇒ Object



29
30
31
32
33
34
35
36
37
# File 'lib/ooxl/util.rb', line 29

def column_letter_to_number(column_letter)
  pow = column_letter.length - 1
  result = 0
  column_letter.each_byte do |b|
    result += 26**pow * (b - 64)
    pow -= 1
  end
  result
end

#column_number_to_letter(index) ⇒ Object



25
26
27
# File 'lib/ooxl/util.rb', line 25

def column_number_to_letter(index)
  COLUMN_LETTERS.fetch(index)
end

#letter_equivalent(col_index) ⇒ Object



9
10
11
# File 'lib/ooxl/util.rb', line 9

def letter_equivalent(col_index)
  column_number_to_letter(col_index + 1)
end

#letter_index(col_letter) ⇒ Object



5
6
7
# File 'lib/ooxl/util.rb', line 5

def letter_index(col_letter)
  column_letter_to_number(col_letter) - 1
end

#node_attribute_value(node, attribute_name) ⇒ Object



39
40
41
42
43
44
# File 'lib/ooxl/util.rb', line 39

def node_attribute_value(node, attribute_name)
  unless node.blank?
    attribute = node.attributes.find { |key, attribute| key == attribute_name}
    attribute[1].value if attribute.present?
  end
end

#node_value_extractor(node) ⇒ Object



21
22
23
# File 'lib/ooxl/util.rb', line 21

def node_value_extractor(node)
  node.try(:value)
end

#to_column_letter(reference) ⇒ Object



13
14
15
# File 'lib/ooxl/util.rb', line 13

def to_column_letter(reference)
  reference.gsub(/\d+/, '')
end

#uniform_reference(ref) ⇒ Object



17
18
19
# File 'lib/ooxl/util.rb', line 17

def uniform_reference(ref)
  ref.to_s[/[A-Z]/] ? column_letter_to_number(ref) : ref
end