roo 0.1.1 → 0.1.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.
- data/lib/roo/openoffice.rb +32 -11
- data/lib/roo/version.rb +1 -1
- data/test/test_roo.rb +21 -1
- data/website/index.html +28 -2
- data/website/index.txt +23 -0
- metadata +1 -1
data/lib/roo/openoffice.rb
CHANGED
@@ -6,8 +6,15 @@ require 'fileutils'
|
|
6
6
|
require 'zip/zipfilesystem'
|
7
7
|
require 'date'
|
8
8
|
|
9
|
+
class Fixnum
|
10
|
+
def as_letter
|
11
|
+
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[self-1,1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
9
15
|
class Openoffice
|
10
16
|
|
17
|
+
|
11
18
|
def initialize(filename)
|
12
19
|
@cells_read = false
|
13
20
|
@filename = filename
|
@@ -41,7 +48,7 @@ class Openoffice
|
|
41
48
|
end
|
42
49
|
end
|
43
50
|
if col.class == String
|
44
|
-
col =
|
51
|
+
col = Openoffice.letter_to_number(col)
|
45
52
|
end
|
46
53
|
read_cells unless @cells_read
|
47
54
|
@cell["#{row},#{col}"]
|
@@ -167,6 +174,18 @@ class Openoffice
|
|
167
174
|
number_to_letter(last_column)
|
168
175
|
end
|
169
176
|
|
177
|
+
def first_row_as_letter
|
178
|
+
number_to_letter(first_row)
|
179
|
+
end
|
180
|
+
|
181
|
+
def last_row_as_letter
|
182
|
+
number_to_letter(last_row)
|
183
|
+
end
|
184
|
+
|
185
|
+
def as_letter(n)
|
186
|
+
number_to_letter(last_row)
|
187
|
+
end
|
188
|
+
|
170
189
|
private
|
171
190
|
|
172
191
|
def number_to_letter(n)
|
@@ -240,27 +259,19 @@ private
|
|
240
259
|
x = 1
|
241
260
|
end
|
242
261
|
end
|
243
|
-
|
244
|
-
# return_sheets << se.attributes['name']
|
245
|
-
end # richtiges sheet
|
262
|
+
end # sheet
|
246
263
|
end
|
247
264
|
end
|
248
265
|
end
|
249
266
|
end
|
250
267
|
end
|
251
268
|
end
|
252
|
-
# puts oo_element_count.to_s+" oo_element_count "
|
253
269
|
end
|
254
|
-
# puts oo_document_count.to_s+" oo_document_count "
|
255
|
-
# p @cell
|
256
270
|
@cells_read = true
|
257
271
|
end
|
258
272
|
|
259
273
|
def process_zipfile(zip, path='')
|
260
274
|
if zip.file.file? path
|
261
|
-
# puts %{#{path}: "#{zip.read(path)}"}
|
262
|
-
# puts %{#{path}:}
|
263
|
-
|
264
275
|
if path == "content.xml"
|
265
276
|
open(@tmpdir+'/'+'roo_content.xml','w') {|f|
|
266
277
|
f << zip.read(path)
|
@@ -269,7 +280,6 @@ private
|
|
269
280
|
else
|
270
281
|
unless path.empty?
|
271
282
|
path += '/'
|
272
|
-
# puts path
|
273
283
|
end
|
274
284
|
zip.dir.foreach(path) do |filename|
|
275
285
|
process_zipfile(zip, path+filename)
|
@@ -283,5 +293,16 @@ private
|
|
283
293
|
process_zipfile(zip)
|
284
294
|
end
|
285
295
|
end
|
296
|
+
|
297
|
+
def Openoffice.letter_to_number(letters)
|
298
|
+
result = 0
|
299
|
+
while letters && letters.length > 0
|
300
|
+
character = letters[0,1].upcase
|
301
|
+
num = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".index(character)+1
|
302
|
+
result = result * 26 + num
|
303
|
+
letters = letters[1..-1]
|
304
|
+
end
|
305
|
+
result
|
306
|
+
end
|
286
307
|
|
287
308
|
end
|
data/lib/roo/version.rb
CHANGED
data/test/test_roo.rb
CHANGED
@@ -2,6 +2,14 @@ require File.dirname(__FILE__) + '/test_helper.rb'
|
|
2
2
|
|
3
3
|
class TestRoo < Test::Unit::TestCase
|
4
4
|
|
5
|
+
def test_letters
|
6
|
+
assert_equal 1, Openoffice.letter_to_number('A')
|
7
|
+
assert_equal 1, Openoffice.letter_to_number('a')
|
8
|
+
assert_equal 2, Openoffice.letter_to_number('B')
|
9
|
+
assert_equal 26, Openoffice.letter_to_number('Z')
|
10
|
+
assert_equal 27, Openoffice.letter_to_number('AA')
|
11
|
+
end
|
12
|
+
|
5
13
|
def test_sheets
|
6
14
|
oo = Openoffice.new("test/numbers1.ods")
|
7
15
|
assert_equal ["Tabelle1","Name of Sheet 2","Sheet3"], oo.sheets
|
@@ -121,11 +129,23 @@ class TestRoo < Test::Unit::TestCase
|
|
121
129
|
def test_boundaries
|
122
130
|
oo = Openoffice.new("test/numbers1.ods")
|
123
131
|
oo.default_sheet = "Name of Sheet 2"
|
124
|
-
assert true
|
125
132
|
assert_equal 2, oo.first_column
|
126
133
|
assert_equal 'B', oo.first_column_as_letter
|
127
134
|
assert_equal 5, oo.first_row
|
128
135
|
assert_equal 'E', oo.last_column_as_letter
|
129
136
|
assert_equal 14, oo.last_row
|
137
|
+
assert_equal 'E', oo.first_row_as_letter
|
138
|
+
assert_equal 'N', oo.last_row_as_letter
|
139
|
+
assert_equal 'N', oo.last_row.as_letter
|
140
|
+
end
|
141
|
+
|
142
|
+
def test_multiple_letters
|
143
|
+
oo = Openoffice.new("test/numbers1.ods")
|
144
|
+
oo.default_sheet = "Sheet3"
|
145
|
+
assert_equal "i am AA", oo.cell('AA',1)
|
146
|
+
assert_equal "i am AB", oo.cell('AB',1)
|
147
|
+
assert_equal "i am BA", oo.cell('BA',1)
|
148
|
+
assert_equal "i am BA", oo.cell(1,'BA')
|
149
|
+
|
130
150
|
end
|
131
151
|
end
|
data/website/index.html
CHANGED
@@ -33,7 +33,7 @@
|
|
33
33
|
<h1>roo</h1>
|
34
34
|
<div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/roo"; return false'>
|
35
35
|
Get Version
|
36
|
-
<a href="http://rubyforge.org/projects/roo" class="numbers">0.1.
|
36
|
+
<a href="http://rubyforge.org/projects/roo" class="numbers">0.1.2</a>
|
37
37
|
</div>
|
38
38
|
<h2>What</h2>
|
39
39
|
|
@@ -120,6 +120,32 @@
|
|
120
120
|
2007-05-18 3.0 370.35 G��stebuch
|
121
121
|
2007-05-18 1.75 216.0375 G��stebuch
|
122
122
|
</code>
|
123
|
+
</pre>
|
124
|
+
|
125
|
+
<p>With the newly written methods</p>
|
126
|
+
|
127
|
+
|
128
|
+
<code>first_column</code>,
|
129
|
+
<code>last_column</code>,
|
130
|
+
<code>first_row</code> and
|
131
|
+
<code>last_row</code>
|
132
|
+
|
133
|
+
<p>you can change line 8 from</p>
|
134
|
+
|
135
|
+
|
136
|
+
<pre>
|
137
|
+
<code>
|
138
|
+
8 4.upto(1000) do |line|
|
139
|
+
</code>
|
140
|
+
</pre>
|
141
|
+
|
142
|
+
<p>to</p>
|
143
|
+
|
144
|
+
|
145
|
+
<pre>
|
146
|
+
<code>
|
147
|
+
8 4.upto(oo.last_row) do |line|
|
148
|
+
</code>
|
123
149
|
</pre>
|
124
150
|
|
125
151
|
<h2>Documentation</h2>
|
@@ -151,7 +177,7 @@
|
|
151
177
|
|
152
178
|
<p>Comments are welcome. Send an email to <a href="mailto:thopre@gmail.com">Thomas Preymesser</a>.</p>
|
153
179
|
<p class="coda">
|
154
|
-
<a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>,
|
180
|
+
<a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>, 31st May 2007<br>
|
155
181
|
Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
|
156
182
|
</p>
|
157
183
|
</div>
|
data/website/index.txt
CHANGED
@@ -75,6 +75,29 @@ which produces this output
|
|
75
75
|
</code>
|
76
76
|
</pre>
|
77
77
|
|
78
|
+
With the newly written methods
|
79
|
+
|
80
|
+
<code>first_column</code>,
|
81
|
+
<code>last_column</code>,
|
82
|
+
<code>first_row</code> and
|
83
|
+
<code>last_row</code>
|
84
|
+
|
85
|
+
you can change line 8 from
|
86
|
+
|
87
|
+
<pre>
|
88
|
+
<code>
|
89
|
+
8 4.upto(1000) do |line|
|
90
|
+
</code>
|
91
|
+
</pre>
|
92
|
+
|
93
|
+
to
|
94
|
+
|
95
|
+
<pre>
|
96
|
+
<code>
|
97
|
+
8 4.upto(oo.last_row) do |line|
|
98
|
+
</code>
|
99
|
+
</pre>
|
100
|
+
|
78
101
|
h2. Documentation
|
79
102
|
|
80
103
|
"rdoc":rdoc/index.html
|
metadata
CHANGED