xlsx-DSL 0.1.0 → 0.2.0

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
  SHA256:
3
- metadata.gz: 95b73fe778d6f6293e2532c788c1617ffd3e82e0cbd7052fc27ae219346ba0dc
4
- data.tar.gz: 4cf5e09e2514c8f5066b8e355d70c916c70e1ab163355edbeb9bfab633747125
3
+ metadata.gz: f62e46d625e1e271ad297beca2799c9a9dc7feb2087113ce5732f1c5d7bfa169
4
+ data.tar.gz: 0f008e537c785e6d4c3656eac25a21c15857dd86b7bf772317f5abf2b2082d31
5
5
  SHA512:
6
- metadata.gz: a41a3845ff09928855f77f24725a42a050d84d9524803f774e5b0b622648c3766f0e60238eceb3bc981087ae2be1c58ffb43d8101effc201469db6d5c32d00f8
7
- data.tar.gz: 2bcbf5bdc28b0258ba2cd63e8495694c79b3c86fbf6cd7ebd397675140b1a986ff6050c3a68677cf3ee2cb9b660fda65c679dafd01bd3b965ebd43562a4a7610
6
+ metadata.gz: 5f45435a4a9202904bae705e3bd69ab8e81743f5365557e3222d7296c65e55ff95d74c085de4d03f6e94909483b693aff245797b4aa34963357520101d558268
7
+ data.tar.gz: b550cfc657cbfdacb9669d20920ec74c52c72dcaa7fd64fb6f35642bae8dbac2aa066d3b5cc3b26d45bb3922ea59c5d14407103483539ab46ec8750b69049a63
@@ -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.0'
5
5
  end
6
6
  end
7
7
  end
data/lib/xlsx/sheet.rb CHANGED
@@ -18,15 +18,25 @@ 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
+ else
33
+ raise IndexError, 'Invalid index'
25
34
  end
26
- self.sheet_data[index]
27
35
  end
28
36
 
29
- alias at_cell []
37
+ def at_cell index
38
+ retrieve_one_cell index
39
+ end
30
40
 
31
41
  def self.parser content
32
42
  doc = Nokogiri::XML content
@@ -65,6 +75,49 @@ module OpenXML
65
75
  def max_row
66
76
  /[A-Z]+(\d+)$/.match(dimension)[1]
67
77
  end
78
+
79
+ private
80
+
81
+ def retrieve_one_cell index
82
+ self.merge_cells.each do |mc|
83
+ if mc.include?(index)
84
+ index = mc.top_left
85
+ end
86
+ end
87
+ self.sheet_data[index].value
88
+ end
89
+
90
+ def retrieve_one_row index
91
+ cells = []
92
+ ('A'..max_column).each do |col|
93
+ cells << retrieve_one_cell(col+index)
94
+ end
95
+ cells
96
+ end
97
+
98
+ def retrieve_rows(one, two)
99
+ cells = []
100
+ (one.to_i..two.to_i).each do |row_index|
101
+ cells << retrieve_one_row(row_index.to_s)
102
+ end
103
+ cells
104
+ end
105
+
106
+ def retrieve_one_column index
107
+ cells = []
108
+ (1..max_row.to_i).each do |row|
109
+ cells << retrieve_one_cell(index+row.to_s)
110
+ end
111
+ cells
112
+ end
113
+
114
+ def retrieve_columns(one, two)
115
+ cells = []
116
+ (one..two).each do |column_index|
117
+ cells << retrieve_one_column(column_index)
118
+ end
119
+ cells
120
+ end
68
121
  end
69
122
 
70
123
  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.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyan Yan