ooxl 0.0.1.4.8.2 → 0.0.1.4.8.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3a4151f45d4223facb6e109bef200b1c7d75cc0f
4
- data.tar.gz: 5c788cb54f1a3790bacbee0fe48d2d993113161b
3
+ metadata.gz: 0b6a832c55f4d6416993a46a825374f1bfe1f836
4
+ data.tar.gz: 6523eea889771a54af020a916e7c2da8673337b5
5
5
  SHA512:
6
- metadata.gz: fb21c20769d531dae6b1a2b392314ee7492c5727a6ce81b0bd27b0afa6ff95977d62fa3849b0e6f3062f6dd0d360fd0b51326246dedec37b472cc2eed75a96f4
7
- data.tar.gz: a0c9a9cb796d5d1832e0806179d2d982cca11b5a4d824e04481ea0fc634f84548aba24d94fab006faba1bf8d872412b91e974281293ad42fbf6d0ef371363e6e
6
+ metadata.gz: 27fa7b1b8f123c11220e5562e3ee7322a2207af4daf22d3ef195eb156f53c5dfb2bc4f564b97ec3c1ca8d8791034ea8bd17973464d6e49d5f6fcac3ed9155504
7
+ data.tar.gz: b49e9fb06d3a84eb64e1a95a05ca92b74f42b10f38818ded53552d4acb759d54e8cfb364ee279dd0ee640b7237211f9752fbe61c57df9e09ddd83dcf424ef25b
data/README.md CHANGED
@@ -54,6 +54,9 @@ sheet[0][0].value# short version
54
54
 
55
55
  # Fetch cell value using the short versions
56
56
  ooxl['Test Sheet 1'][0][0].value
57
+
58
+ # Detecting merged cell
59
+ ooxl['Test Sheet 1'].in_merged_cell?('C1') # true/false
57
60
  ```
58
61
 
59
62
  ### Iteration
data/lib/ooxl/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class OOXL
2
- VERSION = "0.0.1.4.8.2"
2
+ VERSION = "0.0.1.4.8.3"
3
3
  end
@@ -74,8 +74,6 @@ class OOXL
74
74
 
75
75
  def rows
76
76
  @rows ||= begin
77
- # TODO: get the value of merged cells
78
- # merged_cells = @xml.xpath('//mergeCells/mergeCell').map { |merged_cell| merged_cell.attributes["ref"].try(:value) }
79
77
  all_rows = @xml.xpath('//sheetData/row').map do |row_node|
80
78
  row = Row.load_from_node(row_node, @shared_strings, styles)
81
79
  yield row if block_given?
@@ -184,6 +182,12 @@ class OOXL
184
182
  self.new(Nokogiri.XML(xml_stream).remove_namespaces!, shared_strings)
185
183
  end
186
184
 
185
+ def in_merged_cell?(cell_id)
186
+ column_letter, column_index = cell_id.partition(/\d+/)
187
+ range = merged_cells_range.find { |column_range, index_range| column_range.cover?(column_letter) && index_range.cover?(column_index) }
188
+ range.present?
189
+ end
190
+
187
191
  private
188
192
  def fetch_row_by_id(row_id)
189
193
  rows.find { |row| row.id == row_id.to_s}
@@ -195,5 +199,15 @@ class OOXL
195
199
  rows[row_index][cell_reference].style_id
196
200
  end
197
201
 
202
+ def merged_cells_range
203
+ @merged_cells ||= @xml.xpath('//mergeCells/mergeCell').map do |merged_cell|
204
+ # <mergeCell ref="Q381:R381"/>
205
+ start_reference, end_reference = merged_cell.attributes["ref"].try(:value).split(':')
206
+
207
+ start_column_letter, start_index = start_reference.partition(/\d+/)
208
+ end_column_letter, end_index = end_reference.partition(/\d+/)
209
+ [(start_column_letter..end_column_letter), (start_index..end_index)]
210
+ end.to_h
211
+ end
198
212
  end
199
213
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ooxl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.4.8.2
4
+ version: 0.0.1.4.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Mones
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-10-10 00:00:00.000000000 Z
11
+ date: 2016-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport