xlsx-DSL 0.1.0 → 0.2.2

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
  SHA256:
3
- metadata.gz: 95b73fe778d6f6293e2532c788c1617ffd3e82e0cbd7052fc27ae219346ba0dc
4
- data.tar.gz: 4cf5e09e2514c8f5066b8e355d70c916c70e1ab163355edbeb9bfab633747125
3
+ metadata.gz: 2b8f324fee676431176640012486127a71154b0ef4ec9e8b63a87690c71df9b9
4
+ data.tar.gz: 4280a3282d54976d88d71b3b7e417be1062d9115fc7786e1642d918dd2375f3e
5
5
  SHA512:
6
- metadata.gz: a41a3845ff09928855f77f24725a42a050d84d9524803f774e5b0b622648c3766f0e60238eceb3bc981087ae2be1c58ffb43d8101effc201469db6d5c32d00f8
7
- data.tar.gz: 2bcbf5bdc28b0258ba2cd63e8495694c79b3c86fbf6cd7ebd397675140b1a986ff6050c3a68677cf3ee2cb9b660fda65c679dafd01bd3b965ebd43562a4a7610
6
+ metadata.gz: a101af4e44b1f5b598995a5306ab59670031d61774a7c7a5417c1b66146fa1da1b439a1d4e4c82eb630fb2037466af6774e4e8ef02362f07b95644bd4ef981ec
7
+ data.tar.gz: 389dc047f3eed14454a6070bb9d7becf575870ad48c6d415017671ca0d85df0ba5b43dd8648ae998cd1405277dd5c212593602a99c3b2956f2eb48a2013effc9
@@ -1,7 +1,7 @@
1
1
  module OpenXML
2
2
  module SpreadsheetML
3
3
  module DSL
4
- VERSION = '0.1.0'
4
+ VERSION = '0.2.2'
5
5
  end
6
6
  end
7
7
  end
data/lib/xlsx/parser.rb CHANGED
@@ -4,7 +4,7 @@ module OpenXML
4
4
  @@shared_strings = nil
5
5
 
6
6
  class << self
7
- def open xlsx_path
7
+ def open(xlsx_path)
8
8
  Zip::File.open(xlsx_path) do |zf|
9
9
  zf.each do |entry|
10
10
  content = entry.get_input_stream.read
@@ -19,6 +19,7 @@ module OpenXML
19
19
  end
20
20
  end
21
21
  @@workbook.merge_sheets(@@sheets) if @@sheets
22
+ yield(@@workbook) if block_given?
22
23
  @@workbook
23
24
  end
24
25
 
data/lib/xlsx/sheet.rb CHANGED
@@ -18,15 +18,27 @@ module OpenXML
18
18
  end
19
19
 
20
20
  def [] index
21
- self.merge_cells.each do |mc|
22
- if mc.include?(index)
23
- index = mc.top_left
24
- end
21
+ case index
22
+ when /^[A-Z]+\d+$/
23
+ retrieve_one_cell index
24
+ when /^\d+$/
25
+ retrieve_one_row index
26
+ when /^[A-Z]+$/
27
+ retrieve_one_column index
28
+ when /^(\d+)[\-:](\d+)$/
29
+ retrieve_rows($1, $2)
30
+ when /^([A-Z]+)[\-:]([A-Z]+)$/
31
+ retrieve_columns($1, $2)
32
+ when /^([A-Z]+)(\d+)[\-:]([A-Z]+)(\d+)$/
33
+ retrieve_one_matrix($1, $2, $3, $4)
34
+ else
35
+ raise IndexError, 'Invalid index'
25
36
  end
26
- self.sheet_data[index]
27
37
  end
28
38
 
29
- alias at_cell []
39
+ def at_cell index
40
+ retrieve_one_cell index
41
+ end
30
42
 
31
43
  def self.parser content
32
44
  doc = Nokogiri::XML content
@@ -65,6 +77,61 @@ module OpenXML
65
77
  def max_row
66
78
  /[A-Z]+(\d+)$/.match(dimension)[1]
67
79
  end
80
+
81
+ private
82
+
83
+ def retrieve_one_cell index
84
+ self.merge_cells.each do |mc|
85
+ if mc.include?(index)
86
+ index = mc.top_left
87
+ end
88
+ end
89
+ self.sheet_data[index].value
90
+ end
91
+
92
+ def retrieve_one_row index
93
+ cells = []
94
+ ('A'..max_column).each do |col|
95
+ cells << retrieve_one_cell(col+index)
96
+ end
97
+ cells
98
+ end
99
+
100
+ def retrieve_rows(one, two)
101
+ cells = []
102
+ (one.to_i..two.to_i).each do |row_index|
103
+ cells << retrieve_one_row(row_index.to_s)
104
+ end
105
+ cells
106
+ end
107
+
108
+ def retrieve_one_column index
109
+ cells = []
110
+ (1..max_row.to_i).each do |row|
111
+ cells << retrieve_one_cell(index+row.to_s)
112
+ end
113
+ cells
114
+ end
115
+
116
+ def retrieve_columns(one, two)
117
+ cells = []
118
+ (one..two).each do |column_index|
119
+ cells << retrieve_one_column(column_index)
120
+ end
121
+ cells
122
+ end
123
+
124
+ def retrieve_one_matrix (one, two, three, four)
125
+ cells = []
126
+ (two.to_i..four.to_i).each do |row_index|
127
+ row = []
128
+ (one..three).each do |column_index|
129
+ row << retrieve_one_cell(column_index+row_index.to_s)
130
+ end
131
+ cells << row
132
+ end
133
+ cells
134
+ end
68
135
  end
69
136
 
70
137
  class MergeCell
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xlsx-DSL
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyan Yan