ooxl 0.0.1.4.8 → 0.0.1.4.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2ffadaaea4b0b92c53bd633502c25e2d482a43aa
4
- data.tar.gz: 6bf3b567ff8f8f6ece08bb46370cf554d451cb16
3
+ metadata.gz: d66790c4d94aecd9aad507457b9f6aafc34a38db
4
+ data.tar.gz: a33065fe180455e33279e874b8443949feea4dc3
5
5
  SHA512:
6
- metadata.gz: 8490bb572cb19e2fe4053c930c4d23197ff5820e05288cd9efc8825f4fd2367aa86c758f45fa92b4432c2c7cc455fdc9829a1eccb4c9277b8a6f0f02ee7f49ee
7
- data.tar.gz: 83d250c400406df432058b8a3958e97d86b48a0000c50e1f2c19120055824a91bbae4e5934fde8dcd34cb51f63cf1ba2a9058b02f369fc860e9b6988d2d142f0
6
+ metadata.gz: 8a53c7e2d02e19a9206515270de32eeb48c8dc389368a5a6749b6ecd076215ed8822066c5d87d385b4b96b701aae7eaa3e90b359983e298db7660777645f47f7
7
+ data.tar.gz: 13cb6d5720b8dc3136e3166cfe687217f60ae4b5b1c8e8a73c453423e533ec21de9f900c90cd251a74704fabf92a37a2c548691ab56425984120ae6ec0ed8a2e
data/lib/ooxl/util.rb CHANGED
@@ -9,6 +9,10 @@ class OOXL
9
9
  COLUMN_LETTERS.index { |c_letter| c_letter == letter}
10
10
  end
11
11
 
12
+ def to_column_letter(reference)
13
+ reference.gsub(/\d+/, '')
14
+ end
15
+
12
16
  def uniform_reference(ref)
13
17
  ref.to_s[/[A-Z]/] ? letter_index(ref) + 1 : ref
14
18
  end
data/lib/ooxl/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class OOXL
2
- VERSION = "0.0.1.4.8"
2
+ VERSION = "0.0.1.4.8.1"
3
3
  end
@@ -12,6 +12,7 @@ class OOXL
12
12
  @comments = {}
13
13
  @defined_names = {}
14
14
  @styles = []
15
+ @loaded_cache = {}
15
16
  end
16
17
 
17
18
  def code_name
@@ -47,22 +48,46 @@ class OOXL
47
48
  end
48
49
  end
49
50
 
50
- def row(index)
51
- rows.find { |row| row.id == index.to_s}
51
+ def row(index, stream: false)
52
+ if @loaded_cache[:rows] || !stream
53
+ rows.find { |row| row.id == index.to_s}
54
+ else
55
+ found_row = nil
56
+ rows do |row|
57
+ if row.id == index.to_s
58
+ found_row = row
59
+ break
60
+ end
61
+ end
62
+ found_row
63
+ end
64
+ end
65
+
66
+ # test mode
67
+ def cells_by_column(column_letter)
68
+ columns = []
69
+ rows.each do |row|
70
+ columns << row.cells.find { |cell| to_column_letter(cell.id) == column_letter}
71
+ end
72
+ columns
52
73
  end
53
74
 
54
75
  def rows
55
76
  @rows ||= begin
56
77
  # TODO: get the value of merged cells
57
78
  # merged_cells = @xml.xpath('//mergeCells/mergeCell').map { |merged_cell| merged_cell.attributes["ref"].try(:value) }
58
- @xml.xpath('//sheetData/row').map do |row_node|
59
- Row.load_from_node(row_node, @shared_strings, styles)
79
+ all_rows = @xml.xpath('//sheetData/row').map do |row_node|
80
+ row = Row.load_from_node(row_node, @shared_strings, styles)
81
+ yield row if block_given?
82
+ row
60
83
  end
84
+ @loaded_cache[:rows] = true
85
+ all_rows
61
86
  end
62
87
  end
63
88
 
64
89
  def each
65
- rows.each { |row| yield row }
90
+ rows { |row| yield row }
66
91
  end
67
92
 
68
93
  def font(cell_reference)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ooxl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.4.8
4
+ version: 0.0.1.4.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Mones