oxcelix 0.4.0 → 0.4.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 +4 -4
- data/CHANGES +8 -0
- data/README.md +1 -1
- data/lib/oxcelix/nf.rb +169 -169
- data/lib/oxcelix/numformats.rb +1 -1
- data/lib/oxcelix/sax/comments.rb +6 -6
- data/lib/oxcelix/sax/sharedstrings.rb +3 -3
- data/lib/oxcelix/sax/styles.rb +7 -7
- data/lib/oxcelix/sax/xlsheet.rb +23 -23
- data/lib/oxcelix/workbook.rb +20 -20
- data/oxcelix.gemspec +8 -4
- data/spec/cell_spec.rb +6 -7
- data/spec/fixnum_spec.rb +2 -3
- data/spec/matrix_spec.rb +6 -7
- data/spec/oxcelix_spec.rb +15 -21
- data/spec/sheet_spec.rb +13 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/string_spec.rb +13 -11
- metadata +62 -8
- data/spec/helper.rb +0 -10
- data/spec/test.xlsx +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b99db0578e523cdacaeebc304bf13850f46c0294
|
4
|
+
data.tar.gz: e288d38ee68505029830d3e5b9983ddf19b5f995
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d1a32e742704a9f458465b7c2d7309537c397c3a2624ead2f50f6405cb17590c481f403f3b7752c4607fffb47a5a642dedd3e420927b0a0040df69cc373a106e
|
7
|
+
data.tar.gz: f2df2be85463b332b02cfb42144794b25a4385a1ea30a7326f0b2fb6e272eeecec844e60bead634721daf722b5f2cf2f1345f5ec2d80eb1d2fad13d07b330512
|
data/CHANGES
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
0.4.1
|
2
|
+
* Depends on ox >= 2.1.7 that fixed a GC issue on ruby 2.2 (mindreframer)
|
3
|
+
* Simplified gemfile (mindreframer)
|
4
|
+
* pry in spec_helper (mindreframer)
|
5
|
+
* code style cleanup (mindreframer)
|
6
|
+
* "duplicate key" warning removed in numformats.rb (mindreframer, jdevega)
|
7
|
+
* numformat 49 is now treated as Text (jaydorsey)
|
8
|
+
|
1
9
|
0.4.0
|
2
10
|
* Code refactoring - Workbook creation is now more fine-grained.
|
3
11
|
* Speedups: case statements replaced some complex and reoccurring
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Oxcelix
|
2
2
|
=======
|
3
|
-
<a href="http://badge.fury.io/rb/oxcelix"><img src="https://badge.fury.io/rb/oxcelix
|
3
|
+
<a href="http://badge.fury.io/rb/oxcelix"><img src="https://badge.fury.io/rb/oxcelix.svg" alt="Gem Version" height="18"></a>
|
4
4
|
[](https://travis-ci.org/gbiczo/oxcelix)
|
5
5
|
|
6
6
|
Oxcelix - A fast and simple .xlsx file parser
|
data/lib/oxcelix/nf.rb
CHANGED
@@ -1,172 +1,172 @@
|
|
1
1
|
module Oxcelix
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
2
|
+
module Numformats
|
3
|
+
# Formatarray is the array of default format strings in Excel. Nil values should apparently contain CJK date format strings,
|
4
|
+
#feel free to add/document those according to existing standards.
|
5
|
+
Formatarray = [
|
6
|
+
{:id => '0', :xl => 'General', :ostring => nil, :cls => 'string'},
|
7
|
+
{:id => '1', :xl => '0', :ostring => '%1d', :cls => 'numeric'},
|
8
|
+
{:id => '2', :xl => '0.00', :ostring => '%1.2f', :cls => 'numeric'},
|
9
|
+
{:id => '3', :xl => '#,##0', :ostring => '%#4d', :cls => 'numeric'},
|
10
|
+
{:id => '4', :xl => '#,##0.00', :ostring => '%#4.2f', :cls => 'numeric'},
|
11
|
+
{:id => '5', :xl => '', :ostring => nil, :cls => 'string'},
|
12
|
+
{:id => '6', :xl => '', :ostring => nil, :cls => 'string'},
|
13
|
+
{:id => '7', :xl => '', :ostring => nil, :cls => 'string'},
|
14
|
+
{:id => '8', :xl => '', :ostring => nil, :cls => 'string'},
|
15
|
+
{:id => '9', :xl => '0%', :ostring => '%1d%', :cls => 'numeric'},
|
16
|
+
{:id => '10', :xl => '0.00%', :ostring => '%1.2f%', :cls => 'numeric'},
|
17
|
+
{:id => '11', :xl => '0.00E+00', :ostring => '%1.2fE+', :cls => 'numeric'},
|
18
|
+
{:id => '12', :xl => '# ?/?', :ostring => '%#1d', :cls => 'rational'},
|
19
|
+
{:id => '13', :xl => '# ??/??', :ostring => '%#1d', :cls => 'rational'},
|
20
|
+
{:id => '14', :xl => 'd/m/yyyy', :ostring => '%-d/%-m/%Y', :cls => 'date'},
|
21
|
+
{:id => '15', :xl => 'd-mmm-yy', :ostring => '%-d-%b-%y', :cls => 'date'},
|
22
|
+
{:id => '16', :xl => 'd-mmm', :ostring => '%-d-%b', :cls => 'date'},
|
23
|
+
{:id => '17', :xl => 'mmm-yy', :ostring => '%b-%y', :cls => 'date'},
|
24
|
+
{:id => '18', :xl => 'h:mm tt', :ostring => '%-k:%M tt', :cls => 'date'},
|
25
|
+
{:id => '19', :xl => 'h:mm:ss tt', :ostring => '%-k:%M:%-S tt', :cls => 'date'},
|
26
|
+
{:id => '20', :xl => 'H:mm', :ostring => '%-k:%M', :cls => 'date'},
|
27
|
+
{:id => '21', :xl => 'H:mm:ss', :ostring => '%-k:%M:%-S', :cls => 'date'},
|
28
|
+
{:id => '22', :xl => 'm/d/yyyy H:mm', :ostring => '%-m/%-d/%Y %-k:%M', :cls => 'date'},
|
29
|
+
{:id => '23', :xl => '', :ostring => nil, :cls => 'string'},
|
30
|
+
{:id => '24', :xl => '', :ostring => nil, :cls => 'string'},
|
31
|
+
{:id => '25', :xl => '', :ostring => nil, :cls => 'string'},
|
32
|
+
{:id => '26', :xl => '', :ostring => nil, :cls => 'string'},
|
33
|
+
{:id => '27', :xl => '', :ostring => nil, :cls => 'string'},
|
34
|
+
{:id => '28', :xl => '', :ostring => nil, :cls => 'string'},
|
35
|
+
{:id => '29', :xl => '', :ostring => nil, :cls => 'string'},
|
36
|
+
{:id => '30', :xl => '', :ostring => nil, :cls => 'string'},
|
37
|
+
{:id => '31', :xl => '', :ostring => nil, :cls => 'string'},
|
38
|
+
{:id => '32', :xl => '', :ostring => nil, :cls => 'string'},
|
39
|
+
{:id => '33', :xl => '', :ostring => nil, :cls => 'string'},
|
40
|
+
{:id => '34', :xl => '', :ostring => nil, :cls => 'string'},
|
41
|
+
{:id => '35', :xl => '', :ostring => nil, :cls => 'string'},
|
42
|
+
{:id => '36', :xl => '', :ostring => nil, :cls => 'string'},
|
43
|
+
{:id => '37', :xl => '#,##0 ;(#,##0)', :ostring => '%#4d', :cls => 'numeric'},
|
44
|
+
{:id => '38', :xl => '#,##0 ;[Red](#,##0)', :ostring => '%#4d', :cls => 'numeric'},
|
45
|
+
{:id => '39', :xl => '#,##0.00;(#,##0.00)', :ostring => '%#4.2f', :cls => 'numeric'},
|
46
|
+
{:id => '40', :xl => '#,##0.00;[Red](#,##0.00)', :ostring => '%#4.2f', :cls => 'numeric'},
|
47
|
+
{:id => '41', :xl => '', :ostring => nil, :cls => 'string'},
|
48
|
+
{:id => '42', :xl => '', :ostring => nil, :cls => 'string'},
|
49
|
+
{:id => '43', :xl => '', :ostring => nil, :cls => 'string'},
|
50
|
+
{:id => '44', :xl => '', :ostring => nil, :cls => 'string'},
|
51
|
+
{:id => '45', :xl => 'mm:ss', :ostring => '%M:%-S', :cls => 'date'},
|
52
|
+
{:id => '46', :xl => '[h]:mm:ss', :ostring => '%-k:%M:%-S', :cls => 'date'},
|
53
|
+
{:id => '47', :xl => 'mmss.0', :ostring => '%M%-S.%1n', :cls => 'date'},
|
54
|
+
{:id => '48', :xl => '##0.0E+0', :ostring => '%#3.1E', :cls => 'numeric'},
|
55
|
+
{:id => '49', :xl => 'Text', :ostring => nil, :cls => 'string'},
|
56
|
+
{:id => '50', :xl => '', :ostring => nil, :cls => 'string'},
|
57
|
+
{:id => '51', :xl => '', :ostring => nil, :cls => 'string'},
|
58
|
+
{:id => '52', :xl => '', :ostring => nil, :cls => 'string'},
|
59
|
+
{:id => '53', :xl => '', :ostring => nil, :cls => 'string'},
|
60
|
+
{:id => '54', :xl => '', :ostring => nil, :cls => 'string'},
|
61
|
+
{:id => '55', :xl => '', :ostring => nil, :cls => 'string'},
|
62
|
+
{:id => '56', :xl => '', :ostring => nil, :cls => 'string'},
|
63
|
+
{:id => '57', :xl => '', :ostring => nil, :cls => 'string'},
|
64
|
+
{:id => '58', :xl => '', :ostring => nil, :cls => 'string'},
|
65
|
+
{:id => '59', :xl => '', :ostring => nil, :cls => 'string'},
|
66
|
+
{:id => '60', :xl => '', :ostring => nil, :cls => 'string'},
|
67
|
+
{:id => '61', :xl => '', :ostring => nil, :cls => 'string'},
|
68
|
+
{:id => '62', :xl => '', :ostring => nil, :cls => 'string'},
|
69
|
+
{:id => '63', :xl => '', :ostring => nil, :cls => 'string'},
|
70
|
+
{:id => '64', :xl => '', :ostring => nil, :cls => 'string'},
|
71
|
+
{:id => '65', :xl => '', :ostring => nil, :cls => 'string'},
|
72
|
+
{:id => '66', :xl => '', :ostring => nil, :cls => 'string'},
|
73
|
+
{:id => '67', :xl => '', :ostring => nil, :cls => 'string'},
|
74
|
+
{:id => '68', :xl => '', :ostring => nil, :cls => 'string'},
|
75
|
+
{:id => '69', :xl => '', :ostring => nil, :cls => 'string'},
|
76
|
+
{:id => '70', :xl => '', :ostring => nil, :cls => 'string'},
|
77
|
+
{:id => '71', :xl => '', :ostring => nil, :cls => 'string'},
|
78
|
+
{:id => '72', :xl => '', :ostring => nil, :cls => 'string'},
|
79
|
+
{:id => '73', :xl => '', :ostring => nil, :cls => 'string'},
|
80
|
+
{:id => '74', :xl => '', :ostring => nil, :cls => 'string'},
|
81
|
+
{:id => '75', :xl => '', :ostring => nil, :cls => 'string'},
|
82
|
+
{:id => '76', :xl => '', :ostring => nil, :cls => 'string'},
|
83
|
+
{:id => '77', :xl => '', :ostring => nil, :cls => 'string'},
|
84
|
+
{:id => '78', :xl => '', :ostring => nil, :cls => 'string'},
|
85
|
+
{:id => '79', :xl => '', :ostring => nil, :cls => 'string'},
|
86
|
+
{:id => '80', :xl => '', :ostring => nil, :cls => 'string'},
|
87
|
+
{:id => '81', :xl => '', :ostring => nil, :cls => 'string'},
|
88
|
+
{:id => '82', :xl => '', :ostring => nil, :cls => 'string'},
|
89
|
+
{:id => '83', :xl => '', :ostring => nil, :cls => 'string'},
|
90
|
+
{:id => '84', :xl => '', :ostring => nil, :cls => 'string'},
|
91
|
+
{:id => '85', :xl => '', :ostring => nil, :cls => 'string'},
|
92
|
+
{:id => '86', :xl => '', :ostring => nil, :cls => 'string'},
|
93
|
+
{:id => '87', :xl => '', :ostring => nil, :cls => 'string'},
|
94
|
+
{:id => '88', :xl => '', :ostring => nil, :cls => 'string'},
|
95
|
+
{:id => '89', :xl => '', :ostring => nil, :cls => 'string'},
|
96
|
+
{:id => '90', :xl => '', :ostring => nil, :cls => 'string'},
|
97
|
+
{:id => '91', :xl => '', :ostring => nil, :cls => 'string'},
|
98
|
+
{:id => '92', :xl => '', :ostring => nil, :cls => 'string'},
|
99
|
+
{:id => '93', :xl => '', :ostring => nil, :cls => 'string'},
|
100
|
+
{:id => '94', :xl => '', :ostring => nil, :cls => 'string'},
|
101
|
+
{:id => '95', :xl => '', :ostring => nil, :cls => 'string'},
|
102
|
+
{:id => '96', :xl => '', :ostring => nil, :cls => 'string'},
|
103
|
+
{:id => '97', :xl => '', :ostring => nil, :cls => 'string'},
|
104
|
+
{:id => '98', :xl => '', :ostring => nil, :cls => 'string'},
|
105
|
+
{:id => '99', :xl => '', :ostring => nil, :cls => 'string'},
|
106
|
+
{:id => '100', :xl => '', :ostring => nil, :cls => 'string'},
|
107
|
+
{:id => '101', :xl => '', :ostring => nil, :cls => 'string'},
|
108
|
+
{:id => '102', :xl => '', :ostring => nil, :cls => 'string'},
|
109
|
+
{:id => '103', :xl => '', :ostring => nil, :cls => 'string'},
|
110
|
+
{:id => '104', :xl => '', :ostring => nil, :cls => 'string'},
|
111
|
+
{:id => '105', :xl => '', :ostring => nil, :cls => 'string'},
|
112
|
+
{:id => '106', :xl => '', :ostring => nil, :cls => 'string'},
|
113
|
+
{:id => '107', :xl => '', :ostring => nil, :cls => 'string'},
|
114
|
+
{:id => '108', :xl => '', :ostring => nil, :cls => 'string'},
|
115
|
+
{:id => '109', :xl => '', :ostring => nil, :cls => 'string'},
|
116
|
+
{:id => '110', :xl => '', :ostring => nil, :cls => 'string'},
|
117
|
+
{:id => '111', :xl => '', :ostring => nil, :cls => 'string'},
|
118
|
+
{:id => '112', :xl => '', :ostring => nil, :cls => 'string'},
|
119
|
+
{:id => '113', :xl => '', :ostring => nil, :cls => 'string'},
|
120
|
+
{:id => '114', :xl => '', :ostring => nil, :cls => 'string'},
|
121
|
+
{:id => '115', :xl => '', :ostring => nil, :cls => 'string'},
|
122
|
+
{:id => '116', :xl => '', :ostring => nil, :cls => 'string'},
|
123
|
+
{:id => '117', :xl => '', :ostring => nil, :cls => 'string'},
|
124
|
+
{:id => '118', :xl => '', :ostring => nil, :cls => 'string'},
|
125
|
+
{:id => '119', :xl => '', :ostring => nil, :cls => 'string'},
|
126
|
+
{:id => '120', :xl => '', :ostring => nil, :cls => 'string'},
|
127
|
+
{:id => '121', :xl => '', :ostring => nil, :cls => 'string'},
|
128
|
+
{:id => '122', :xl => '', :ostring => nil, :cls => 'string'},
|
129
|
+
{:id => '123', :xl => '', :ostring => nil, :cls => 'string'},
|
130
|
+
{:id => '124', :xl => '', :ostring => nil, :cls => 'string'},
|
131
|
+
{:id => '125', :xl => '', :ostring => nil, :cls => 'string'},
|
132
|
+
{:id => '126', :xl => '', :ostring => nil, :cls => 'string'},
|
133
|
+
{:id => '127', :xl => '', :ostring => nil, :cls => 'string'},
|
134
|
+
{:id => '128', :xl => '', :ostring => nil, :cls => 'string'},
|
135
|
+
{:id => '129', :xl => '', :ostring => nil, :cls => 'string'},
|
136
|
+
{:id => '130', :xl => '', :ostring => nil, :cls => 'string'},
|
137
|
+
{:id => '131', :xl => '', :ostring => nil, :cls => 'string'},
|
138
|
+
{:id => '132', :xl => '', :ostring => nil, :cls => 'string'},
|
139
|
+
{:id => '133', :xl => '', :ostring => nil, :cls => 'string'},
|
140
|
+
{:id => '134', :xl => '', :ostring => nil, :cls => 'string'},
|
141
|
+
{:id => '135', :xl => '', :ostring => nil, :cls => 'string'},
|
142
|
+
{:id => '136', :xl => '', :ostring => nil, :cls => 'string'},
|
143
|
+
{:id => '137', :xl => '', :ostring => nil, :cls => 'string'},
|
144
|
+
{:id => '138', :xl => '', :ostring => nil, :cls => 'string'},
|
145
|
+
{:id => '139', :xl => '', :ostring => nil, :cls => 'string'},
|
146
|
+
{:id => '140', :xl => '', :ostring => nil, :cls => 'string'},
|
147
|
+
{:id => '141', :xl => '', :ostring => nil, :cls => 'string'},
|
148
|
+
{:id => '142', :xl => '', :ostring => nil, :cls => 'string'},
|
149
|
+
{:id => '143', :xl => '', :ostring => nil, :cls => 'string'},
|
150
|
+
{:id => '144', :xl => '', :ostring => nil, :cls => 'string'},
|
151
|
+
{:id => '145', :xl => '', :ostring => nil, :cls => 'string'},
|
152
|
+
{:id => '146', :xl => '', :ostring => nil, :cls => 'string'},
|
153
|
+
{:id => '147', :xl => '', :ostring => nil, :cls => 'string'},
|
154
|
+
{:id => '148', :xl => '', :ostring => nil, :cls => 'string'},
|
155
|
+
{:id => '149', :xl => '', :ostring => nil, :cls => 'string'},
|
156
|
+
{:id => '150', :xl => '', :ostring => nil, :cls => 'string'},
|
157
|
+
{:id => '151', :xl => '', :ostring => nil, :cls => 'string'},
|
158
|
+
{:id => '152', :xl => '', :ostring => nil, :cls => 'string'},
|
159
|
+
{:id => '153', :xl => '', :ostring => nil, :cls => 'string'},
|
160
|
+
{:id => '154', :xl => '', :ostring => nil, :cls => 'string'},
|
161
|
+
{:id => '155', :xl => '', :ostring => nil, :cls => 'string'},
|
162
|
+
{:id => '156', :xl => '', :ostring => nil, :cls => 'string'},
|
163
|
+
{:id => '157', :xl => '', :ostring => nil, :cls => 'string'},
|
164
|
+
{:id => '158', :xl => '', :ostring => nil, :cls => 'string'},
|
165
|
+
{:id => '159', :xl => '', :ostring => nil, :cls => 'string'},
|
166
|
+
{:id => '160', :xl => '', :ostring => nil, :cls => 'string'},
|
167
|
+
{:id => '161', :xl => '', :ostring => nil, :cls => 'string'},
|
168
|
+
{:id => '162', :xl => '', :ostring => nil, :cls => 'string'},
|
169
|
+
{:id => '163', :xl => '', :ostring => nil, :cls => 'string'},
|
170
|
+
]
|
171
171
|
end
|
172
172
|
end
|
data/lib/oxcelix/numformats.rb
CHANGED
@@ -6,7 +6,7 @@ module Oxcelix
|
|
6
6
|
Dtmap = {'hh'=>'%H', 'ii'=>'%M', 'i'=>'%-M', 'H'=>'%-k', 'h'=>'%-k',\
|
7
7
|
'ss'=>'%-S', 's'=>'%S', 'mmmmm'=>'%b', 'mmmm'=>'%B', 'mmm'=>'%b', 'mm'=>'%m', \
|
8
8
|
'm'=>'%-m', 'dddd'=>'%A', 'ddd'=>'%a', 'dd'=>'%d', 'd'=>'%-d', 'yyyy'=>'%Y', \
|
9
|
-
'yy'=>'%y', 'AM/PM'=>'%p', 'A/P'=>'%p', '.0'=>''
|
9
|
+
'yy'=>'%y', 'AM/PM'=>'%p', 'A/P'=>'%p', '.0'=>''}
|
10
10
|
|
11
11
|
# Convert the temporary format array (the collection of non-default number formatting strings defined in the excel sheet in use)
|
12
12
|
# to a series of hashes containing an id, an excel format string, a converted format string and an object class the format is
|
data/lib/oxcelix/sax/comments.rb
CHANGED
@@ -7,21 +7,21 @@ module Oxcelix
|
|
7
7
|
# @return [Hash] a hash representing a comment
|
8
8
|
attr_accessor :commarray, :comment
|
9
9
|
def initialize
|
10
|
-
@commarray=[]
|
11
|
-
@comment={}
|
10
|
+
@commarray = []
|
11
|
+
@comment = {}
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
# Push Cell comment hash (comment + reference) to @commarray
|
15
15
|
def text(str)
|
16
|
-
@comment[:comment]=str.gsub(' ', '')
|
16
|
+
@comment[:comment] = str.gsub(' ', '')
|
17
17
|
@commarray << @comment
|
18
18
|
@comment = Hash.new
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
# Returns reference
|
22
22
|
def attr(name, str)
|
23
23
|
if name == :ref
|
24
|
-
@comment[:ref]=str
|
24
|
+
@comment[:ref] = str
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
module Oxcelix
|
2
|
-
# Ox based SAX parser which pushes shared strings (taken from the sharedString.xml file) to an array
|
3
|
-
# These strings will replace the references in the cells (interpolation).
|
2
|
+
# Ox based SAX parser which pushes shared strings (taken from the sharedString.xml file) to an array
|
3
|
+
# These strings will replace the references in the cells (interpolation).
|
4
4
|
class Sharedstrings < ::Ox::Sax
|
5
5
|
# @!attribute [rw] stringarray
|
6
6
|
# @return [Array] the array of all the strings found in sharedStrings.xml
|
7
7
|
attr_accessor :stringarray
|
8
8
|
def initialize
|
9
|
-
@stringarray=[]
|
9
|
+
@stringarray = []
|
10
10
|
end
|
11
11
|
|
12
12
|
# Push the comment string into @stringarray
|
data/lib/oxcelix/sax/styles.rb
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
require 'ox'
|
2
2
|
module Oxcelix
|
3
3
|
|
4
|
-
# Ox based SAX parser which pushes the number formats (taken from the styles.xml file) to an array
|
4
|
+
# Ox based SAX parser which pushes the number formats (taken from the styles.xml file) to an array
|
5
5
|
# The reference taken from the cell's 's' attribute points to an element of the
|
6
6
|
# style array, which in turn points to a number format (numFmt) that can be
|
7
7
|
# either built-in (@formats) or defined in the styles.xml itself.
|
8
8
|
class Styles < ::Ox::Sax
|
9
9
|
attr_accessor :styleary, :xmlstack, :temparray
|
10
10
|
def initialize
|
11
|
-
@temparray=[]
|
12
|
-
@styleary=[]
|
13
|
-
@xmlstack
|
14
|
-
@numform={}
|
11
|
+
@temparray = []
|
12
|
+
@styleary = []
|
13
|
+
@xmlstack = []
|
14
|
+
@numform = {}
|
15
15
|
end
|
16
16
|
|
17
17
|
def nf key, value
|
@@ -33,7 +33,7 @@ module Oxcelix
|
|
33
33
|
def formatCode str
|
34
34
|
nf :formatCode, str
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
def start_element(name)
|
38
38
|
@xmlstack << name
|
39
39
|
end
|
@@ -46,4 +46,4 @@ module Oxcelix
|
|
46
46
|
self.send name, str if self.respond_to?(name)
|
47
47
|
end
|
48
48
|
end
|
49
|
-
end
|
49
|
+
end
|
data/lib/oxcelix/sax/xlsheet.rb
CHANGED
@@ -22,10 +22,10 @@ module Oxcelix
|
|
22
22
|
# @return [Cell] the cell currently being processed.
|
23
23
|
attr_accessor :xmlstack, :mergedcells, :cellarray, :cell
|
24
24
|
def initialize()
|
25
|
-
@xmlstack
|
25
|
+
@xmlstack = []
|
26
26
|
@mergedcells = []
|
27
|
-
@cellarray
|
28
|
-
@cell
|
27
|
+
@cellarray = []
|
28
|
+
@cell = Cell.new
|
29
29
|
end
|
30
30
|
|
31
31
|
# Save SAX state-machine state to {#xmlstack} if and only if the processed
|
@@ -39,19 +39,19 @@ module Oxcelix
|
|
39
39
|
@xmlstack << name
|
40
40
|
end
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
# Step back in the stack ({#xmlstack}.pop), clear actual cell information
|
44
44
|
# @param [String] name Element ends
|
45
45
|
def end_element(name)
|
46
46
|
@xmlstack.pop
|
47
47
|
case name
|
48
48
|
when :c
|
49
|
-
@cell=Cell.new
|
49
|
+
@cell = Cell.new
|
50
50
|
when :mergeCell
|
51
|
-
@cell=Cell.new
|
51
|
+
@cell = Cell.new
|
52
52
|
end
|
53
53
|
end
|
54
|
-
|
54
|
+
|
55
55
|
# Set cell value, style, etc. This will only happen if the cell has an
|
56
56
|
# actual value AND the parser's state is :c.
|
57
57
|
# If the state is :mergeCell AND the actual attribute name is :ref the
|
@@ -59,7 +59,7 @@ module Oxcelix
|
|
59
59
|
# The attribute name is tested against the Cell object: if the cell
|
60
60
|
# has a method named the same way, that method is called with the str parameter.
|
61
61
|
# @param [String] name of the attribute.
|
62
|
-
# @param [String] str Content of the attribute
|
62
|
+
# @param [String] str Content of the attribute
|
63
63
|
def attr(name, str)
|
64
64
|
case @xmlstack.last
|
65
65
|
when :c
|
@@ -78,57 +78,57 @@ module Oxcelix
|
|
78
78
|
@cell.v str
|
79
79
|
@cellarray << @cell
|
80
80
|
end
|
81
|
-
@cell=Cell.new
|
81
|
+
@cell = Cell.new
|
82
82
|
end
|
83
83
|
end
|
84
84
|
end
|
85
85
|
|
86
|
-
# A class that is inherited from the Xlsheet parser, but only parses a "page" of the given sheet.
|
86
|
+
# A class that is inherited from the Xlsheet parser, but only parses a "page" of the given sheet.
|
87
87
|
# Its initialize will honor the per_page option (lines per page) and the pageno option (actual page to be parsed)
|
88
|
-
# Cells outside the actual page will be omitted from the parsing process. Mergegroups will only be included
|
88
|
+
# Cells outside the actual page will be omitted from the parsing process. Mergegroups will only be included
|
89
89
|
# if the starting cell is within the actual page
|
90
90
|
class PagSheet < Xlsheet
|
91
91
|
attr_accessor :xmlstack, :mergedcells, :cellarray, :cell
|
92
|
-
|
92
|
+
|
93
93
|
def initialize(per_page, pageno)
|
94
|
-
@PER_PAGE=per_page
|
95
|
-
@PAGENO=pageno
|
94
|
+
@PER_PAGE = per_page
|
95
|
+
@PAGENO = pageno
|
96
96
|
super()
|
97
97
|
end
|
98
|
-
|
98
|
+
|
99
99
|
def text(str)
|
100
100
|
if @xmlstack.last == :c
|
101
101
|
if @cell.type != "shared" && @cell.type != "e" && str.numeric? && ((@PER_PAGE * (@PAGENO-1)..(@PER_PAGE*@PAGENO-1)).include?@cell.y)
|
102
102
|
@cell.v str
|
103
103
|
@cellarray << @cell
|
104
104
|
end
|
105
|
-
@cell=Cell.new
|
105
|
+
@cell = Cell.new
|
106
106
|
end
|
107
107
|
end
|
108
108
|
end
|
109
109
|
|
110
|
-
# A class that is inherited from the Xlsheet parser, but only parses a given range of the given sheet.
|
110
|
+
# A class that is inherited from the Xlsheet parser, but only parses a given range of the given sheet.
|
111
111
|
# Its initialize will accept a range parameter. Cells outside this range will not be parsed at all.
|
112
112
|
# Mergegroups will only be included if the starting cell is within the selected range.
|
113
113
|
class Cellrange < Xlsheet
|
114
114
|
attr_accessor :xmlstack, :mergedcells, :cellarray, :cell
|
115
115
|
|
116
116
|
def initialize(range)
|
117
|
-
@cell=Cell.new
|
118
|
-
@RANGE_START=range.begin
|
119
|
-
@RANGE_END=range.end
|
117
|
+
@cell = Cell.new
|
118
|
+
@RANGE_START = range.begin
|
119
|
+
@RANGE_END = range.end
|
120
120
|
super()
|
121
121
|
end
|
122
|
-
|
122
|
+
|
123
123
|
def text(str)
|
124
124
|
if @xmlstack.last == :c
|
125
|
-
if @cell.type != "shared" && @cell.type != "e" && str.numeric?
|
125
|
+
if @cell.type != "shared" && @cell.type != "e" && str.numeric?
|
126
126
|
if (((@cell.x(@RANGE_START)..@cell.x(@RANGE_END)).include? @cell.x) && ((@cell.y(@RANGE_START)..@cell.y(@RANGE_END)).include? @cell.y))
|
127
127
|
@cell.v str
|
128
128
|
@cellarray << @cell
|
129
129
|
end
|
130
130
|
end
|
131
|
-
@cell=Cell.new
|
131
|
+
@cell = Cell.new
|
132
132
|
end
|
133
133
|
end
|
134
134
|
|
data/lib/oxcelix/workbook.rb
CHANGED
@@ -15,22 +15,22 @@ module Oxcelix
|
|
15
15
|
# A class that represents an Excel workbook. By default, it will open the excel file, and convert it to a collection of
|
16
16
|
# Matrix objects
|
17
17
|
# @!attribute [rw] sheets
|
18
|
-
# @return [Array] a collection of {Sheet} objects
|
18
|
+
# @return [Array] a collection of {Sheet} objects
|
19
19
|
class Workbook
|
20
20
|
include Cellhelper
|
21
21
|
include Workbookhelper
|
22
22
|
include Numformats
|
23
|
-
|
23
|
+
|
24
24
|
attr_accessor :sheets
|
25
25
|
|
26
26
|
##
|
27
27
|
# Create a new {Workbook} object.
|
28
28
|
#
|
29
|
-
# filename is the name of the Excel 2007/2010 file (xlsx) to be opened (Optional)
|
29
|
+
# filename is the name of the Excel 2007/2010 file (xlsx) to be opened (Optional)
|
30
30
|
#
|
31
31
|
# options is a collection of options that can be passed to Workbook.
|
32
32
|
# Options may include:
|
33
|
-
# * :copymerge (=> true/false) - Copy and repeat the content of the merged cells into the whole group, e.g.
|
33
|
+
# * :copymerge (=> true/false) - Copy and repeat the content of the merged cells into the whole group, e.g.
|
34
34
|
# the group of three merged cells <tt>| a |</tt>
|
35
35
|
# will become: <tt>|a|a|a|</tt>
|
36
36
|
# * :include (Array) - an array of sheet names to be included
|
@@ -49,7 +49,7 @@ module Oxcelix
|
|
49
49
|
# * Interpolation of the shared strings
|
50
50
|
# * adding comments to the cells
|
51
51
|
# * Converting each sheet to a Matrix object
|
52
|
-
# * Deleting the temporary directory that stores the XML files.
|
52
|
+
# * Deleting the temporary directory that stores the XML files.
|
53
53
|
def initialize(filename=nil, options={})
|
54
54
|
@sheets=[]
|
55
55
|
@sheetbase={}
|
@@ -62,17 +62,17 @@ module Oxcelix
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
-
at_exit do
|
65
|
+
at_exit do
|
66
66
|
FileUtils.remove_dir(@destination, true)
|
67
67
|
end
|
68
|
-
|
69
|
-
# Unzips the excel file to a temporary directory. The directory will be removed at the end of the parsing stage when invoked
|
68
|
+
|
69
|
+
# Unzips the excel file to a temporary directory. The directory will be removed at the end of the parsing stage when invoked
|
70
70
|
# by initialize, otherwise at exit.
|
71
71
|
# @param [String] filename the name of the Excel file to be unpacked
|
72
72
|
def unpack(filename)
|
73
73
|
@destination = Dir.mktmpdir
|
74
74
|
Zip::File.open(filename){ |zip_file|
|
75
|
-
zip_file.each{ |f|
|
75
|
+
zip_file.each{ |f|
|
76
76
|
f_path=File.join(@destination, f.name)
|
77
77
|
FileUtils.mkdir_p(File.dirname(f_path))
|
78
78
|
zip_file.extract(f, f_path) unless File.exists?(f_path)
|
@@ -85,9 +85,9 @@ module Oxcelix
|
|
85
85
|
def open(options={})
|
86
86
|
f=IO.read(@destination + '/xl/workbook.xml')
|
87
87
|
a=Ox::load(f)
|
88
|
-
|
88
|
+
|
89
89
|
sheetdata(a, options); commentsrel; shstrings;
|
90
|
-
|
90
|
+
|
91
91
|
@styles = Styles.new()
|
92
92
|
File.open(@destination + '/xl/styles.xml', 'r') do |f|
|
93
93
|
Ox.sax_parse(@styles, f)
|
@@ -134,7 +134,7 @@ module Oxcelix
|
|
134
134
|
end
|
135
135
|
matrixto options
|
136
136
|
end
|
137
|
-
|
137
|
+
|
138
138
|
private
|
139
139
|
# @private
|
140
140
|
# Given the data found in workbook.xml, create a hash and push it to the sheets
|
@@ -174,7 +174,7 @@ module Oxcelix
|
|
174
174
|
sheetarr=@sheets.map{|i| i[:name]}
|
175
175
|
sheet_collection(sheetarr, options)
|
176
176
|
end
|
177
|
-
|
177
|
+
|
178
178
|
# Build the array of working sheets based on the :include and :exclude parameters.
|
179
179
|
# @param[sheetarr, options]
|
180
180
|
def sheet_collection(sheetarr, options)
|
@@ -221,8 +221,8 @@ module Oxcelix
|
|
221
221
|
end
|
222
222
|
@sharedstrings=strings.stringarray
|
223
223
|
end
|
224
|
-
|
225
|
-
# Parses the comments related to the actual sheet.
|
224
|
+
|
225
|
+
# Parses the comments related to the actual sheet.
|
226
226
|
# @param [String] commentfile
|
227
227
|
# @return [Array] a collection of comments relative to the Excel sheet currently processed
|
228
228
|
def mkcomments(commentfile)
|
@@ -247,7 +247,7 @@ module Oxcelix
|
|
247
247
|
# sheet), and after the only meaningful cell of the minor is found, it is
|
248
248
|
# copied back to the remaining cells of the group. The coordinates (xlcoords)
|
249
249
|
# of each copied cell is changed to reflect the actual Excel coordinate.
|
250
|
-
#
|
250
|
+
#
|
251
251
|
# The matrix will replace the array of cells in the actual sheet.
|
252
252
|
# @param [Hash] options
|
253
253
|
# @return [Matrix] a Matrix object that stores the cell values, and, depending on the copymerge parameter, will copy the merged value
|
@@ -280,12 +280,12 @@ module Oxcelix
|
|
280
280
|
end
|
281
281
|
end
|
282
282
|
|
283
|
-
# buildsheet creates a matrix of the needed size and fills it with the cells. Mainly for internal use only.
|
283
|
+
# buildsheet creates a matrix of the needed size and fills it with the cells. Mainly for internal use only.
|
284
284
|
# When paginating or parsing only a range of cells, the size of the matrix will be adjusted (no nil values
|
285
285
|
# will be left at the beginning of the sheet), to preserve memory.
|
286
286
|
# @param [Sheet] sheet the actual sheetarray.
|
287
287
|
# @param [Hash] options :paginate or :cellrange will affect the size of the matrix
|
288
|
-
# @return [Sheet] a Sheet object that stores the cell values.
|
288
|
+
# @return [Sheet] a Sheet object that stores the cell values.
|
289
289
|
def buildsheet(sheet, options)
|
290
290
|
ydiff, xdiff = 0,0
|
291
291
|
if !options[:paginate].nil?
|
@@ -294,7 +294,7 @@ module Oxcelix
|
|
294
294
|
xdiff = x(options[:cellrange].begin)
|
295
295
|
ydiff = y(options[:cellrange].begin)
|
296
296
|
end
|
297
|
-
|
297
|
+
|
298
298
|
m=Sheet.build(sheet[:cells].last.y+1-ydiff, sheet[:cells].last.x+1-xdiff) {nil}
|
299
299
|
sheet[:cells].each do |c|
|
300
300
|
m[c.y-ydiff, c.x-xdiff] = c
|
@@ -321,7 +321,7 @@ module Oxcelix
|
|
321
321
|
end
|
322
322
|
end
|
323
323
|
end
|
324
|
-
|
324
|
+
|
325
325
|
# RawWorkbook is a Workbook that contains the raw values of the original Excel cells instead of Cell objects.
|
326
326
|
# The values are taken from the Sheet arrays by running the #Cell::value method.
|
327
327
|
class RawWorkbook < Workbook
|
data/oxcelix.gemspec
CHANGED
@@ -3,8 +3,8 @@
|
|
3
3
|
require 'rake'
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = 'oxcelix'
|
6
|
-
s.version = '0.4.
|
7
|
-
s.date = '
|
6
|
+
s.version = '0.4.1'
|
7
|
+
s.date = '2015-06-15'
|
8
8
|
s.summary = 'A fast Excel 2007/2010 file parser'
|
9
9
|
s.description = 'A fast Excel 2007/2010 (.xlsx) file parser that returns a collection of Matrix objects'
|
10
10
|
s.authors = 'Giovanni Biczo'
|
@@ -19,8 +19,12 @@ Gem::Specification.new do |s|
|
|
19
19
|
"lib/oxcelix/sax/*",
|
20
20
|
"oxcelix.gemspec", "spec/*", ".yardopts", "CHANGES"].to_a
|
21
21
|
s.license = 'MIT'
|
22
|
-
|
23
|
-
s.add_runtime_dependency "ox",
|
22
|
+
|
23
|
+
s.add_runtime_dependency "ox", [">= 2.1.7"]
|
24
24
|
s.add_runtime_dependency "rubyzip", [">= 1.1.0"]
|
25
|
+
s.add_development_dependency "pry"
|
26
|
+
s.add_development_dependency "rake"
|
27
|
+
s.add_development_dependency "rspec"
|
28
|
+
s.add_development_dependency "oga"
|
25
29
|
s.rdoc_options << '--all'
|
26
30
|
end
|
data/spec/cell_spec.rb
CHANGED
@@ -1,14 +1,13 @@
|
|
1
|
-
|
2
|
-
require_relative '../lib/oxcelix.rb'
|
1
|
+
require './spec/spec_helper'
|
3
2
|
|
4
|
-
|
3
|
+
describe "Cell" do
|
5
4
|
describe '#r' do
|
6
5
|
it "sets the value of xlcoords" do
|
7
6
|
c=Oxcelix::Cell.new
|
8
7
|
c.r('H276')
|
9
|
-
c.xlcoords.should=='H276'
|
10
|
-
c.x.should==7
|
11
|
-
c.y.should==275
|
8
|
+
c.xlcoords.should == 'H276'
|
9
|
+
c.x.should == 7
|
10
|
+
c.y.should == 275
|
12
11
|
end
|
13
12
|
end
|
14
|
-
end
|
13
|
+
end
|
data/spec/fixnum_spec.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
|
-
|
2
|
-
require_relative '../lib/oxcelix.rb'
|
1
|
+
require './spec/spec_helper'
|
3
2
|
|
4
|
-
|
3
|
+
describe "Fixnum object" do
|
5
4
|
describe '#col_name' do
|
6
5
|
it "returns a string representing an excel column name" do
|
7
6
|
(0..25).each do |x|
|
data/spec/matrix_spec.rb
CHANGED
@@ -1,12 +1,11 @@
|
|
1
|
-
|
2
|
-
require_relative '../lib/oxcelix.rb'
|
1
|
+
require './spec/spec_helper'
|
3
2
|
|
4
|
-
|
3
|
+
describe "Matrix object" do
|
5
4
|
describe '#[]=' do
|
6
5
|
it "should set a cell to a new value" do
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
m_obj = Matrix.build(4, 4){nil}
|
7
|
+
m_obj[3,3] = 'foo'
|
8
|
+
m_obj[3,3].should == 'foo'
|
9
|
+
end
|
11
10
|
end
|
12
11
|
end
|
data/spec/oxcelix_spec.rb
CHANGED
@@ -1,37 +1,31 @@
|
|
1
|
-
|
2
|
-
require_relative '../lib/oxcelix.rb'
|
1
|
+
require './spec/spec_helper.rb'
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
describe 'Workbook' do
|
3
|
+
describe "Oxcelix module" do
|
4
|
+
describe 'Workbook' do
|
7
5
|
context 'normal' do
|
8
6
|
it "should open the excel file and return a Workbook object" do
|
9
|
-
file = 'spec/test.xlsx'
|
7
|
+
file = 'spec/fixtures/test.xlsx'
|
10
8
|
w=Oxcelix::Workbook.new(file)
|
11
|
-
w.sheets.size.should
|
12
|
-
w.sheets[0].name.should=="Testsheet1"
|
13
|
-
w.sheets[1].name.should=="Testsheet2"
|
9
|
+
w.sheets.size.should == 2
|
10
|
+
w.sheets[0].name.should == "Testsheet1"
|
11
|
+
w.sheets[1].name.should == "Testsheet2"
|
14
12
|
end
|
15
13
|
end
|
16
14
|
context 'with excluded sheets' do
|
17
15
|
it "should open the sheets not excluded of the excel file" do
|
18
|
-
file = 'spec/test.xlsx'
|
16
|
+
file = 'spec/fixtures/test.xlsx'
|
19
17
|
w=Oxcelix::Workbook.new(file, {:exclude=>['Testsheet2']})
|
20
|
-
w.sheets.size.should==1
|
21
|
-
w.sheets[0].name.should=="Testsheet1"
|
18
|
+
w.sheets.size.should == 1
|
19
|
+
w.sheets[0].name.should == "Testsheet1"
|
22
20
|
end
|
23
21
|
end
|
24
22
|
context 'with included sheets' do
|
25
23
|
it "should open only the included sheets of the excel file" do
|
26
|
-
file = 'spec/test.xlsx'
|
27
|
-
w=Oxcelix::Workbook.new(file, {:include=>['Testsheet2']})
|
28
|
-
w.sheets.size.should==1
|
29
|
-
w.sheets[0].name.should=="Testsheet2"
|
24
|
+
file = 'spec/fixtures/test.xlsx'
|
25
|
+
w = Oxcelix::Workbook.new(file, {:include=>['Testsheet2']})
|
26
|
+
w.sheets.size.should == 1
|
27
|
+
w.sheets[0].name.should == "Testsheet2"
|
30
28
|
end
|
31
29
|
end
|
32
|
-
|
33
|
-
it "should open the excel file and copy the merged cells trough the mergegroup" do
|
34
|
-
end
|
35
|
-
end
|
36
|
-
# end
|
30
|
+
end
|
37
31
|
end
|
data/spec/sheet_spec.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require './spec/spec_helper.rb'
|
2
|
+
|
3
|
+
describe "Oxcelix module" do
|
4
|
+
describe 'Sheet' do
|
5
|
+
context 'format' do
|
6
|
+
it "should not raise a syntax error on a Text field with a ZIP code" do
|
7
|
+
file = 'spec/fixtures/test.xlsx'
|
8
|
+
w=Oxcelix::Workbook.new(file)
|
9
|
+
lambda { w.sheets[0].to_fmt }.should_not raise_error
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/spec/spec_helper.rb
CHANGED
data/spec/string_spec.rb
CHANGED
@@ -1,19 +1,21 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
|
2
|
+
require './spec/spec_helper'
|
3
|
+
|
4
|
+
describe "String object" do
|
4
5
|
describe 'numeric?' do
|
5
6
|
context "with numbers" do
|
6
7
|
it "should return true" do
|
7
|
-
|
8
|
-
|
8
|
+
(1..100).each do |x|
|
9
|
+
x.to_s.numeric?.should == true
|
10
|
+
end
|
9
11
|
end
|
10
12
|
end
|
11
|
-
context "with strings"
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
context "with strings" do
|
14
|
+
it "should return false" do
|
15
|
+
('a'..'zz').each do |x|
|
16
|
+
x.numeric?.should == false
|
17
|
+
end
|
18
|
+
end
|
17
19
|
end
|
18
20
|
end
|
19
21
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oxcelix
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Giovanni Biczo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-06-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ox
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
19
|
+
version: 2.1.7
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.
|
26
|
+
version: 2.1.7
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rubyzip
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,6 +38,62 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 1.1.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: oga
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
41
97
|
description: A fast Excel 2007/2010 (.xlsx) file parser that returns a collection
|
42
98
|
of Matrix objects
|
43
99
|
email:
|
@@ -64,12 +120,11 @@ files:
|
|
64
120
|
- oxcelix.gemspec
|
65
121
|
- spec/cell_spec.rb
|
66
122
|
- spec/fixnum_spec.rb
|
67
|
-
- spec/helper.rb
|
68
123
|
- spec/matrix_spec.rb
|
69
124
|
- spec/oxcelix_spec.rb
|
125
|
+
- spec/sheet_spec.rb
|
70
126
|
- spec/spec_helper.rb
|
71
127
|
- spec/string_spec.rb
|
72
|
-
- spec/test.xlsx
|
73
128
|
homepage: http://github.com/gbiczo/oxcelix
|
74
129
|
licenses:
|
75
130
|
- MIT
|
@@ -91,9 +146,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
91
146
|
version: '0'
|
92
147
|
requirements: []
|
93
148
|
rubyforge_project: oxcelix
|
94
|
-
rubygems_version: 2.
|
149
|
+
rubygems_version: 2.4.8
|
95
150
|
signing_key:
|
96
151
|
specification_version: 4
|
97
152
|
summary: A fast Excel 2007/2010 file parser
|
98
153
|
test_files: []
|
99
|
-
has_rdoc:
|
data/spec/helper.rb
DELETED
data/spec/test.xlsx
DELETED
Binary file
|