roo 0.4.1 → 0.5.0

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.
@@ -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.4.1</a>
36
+ <a href="http://rubyforge.org/projects/roo" class="numbers">0.5.0</a>
37
37
  </div>
38
38
  <h2>What</h2>
39
39
 
@@ -137,32 +137,56 @@
137
137
  </code>
138
138
  </pre>
139
139
 
140
+ <h3>Cell Types</h3>
141
+
142
+
143
+ <p>oo.<strong>celltype</strong>(row,col) returns the type of a cell. Currently these types will be
144
+ returned:</p>
145
+
146
+
147
+ <ul>
148
+ <li>:float</li>
149
+ <li>:string</li>
150
+ <li>:date</li>
151
+ <li>:percentage</li>
152
+ <li>:formula</li>
153
+ </ul>
154
+
155
+
140
156
  <h3>Formulas</h3>
141
157
 
142
158
 
143
159
  <p>Formulas in Openoffice-Spreadsheets can be handled.</p>
144
160
 
145
161
 
146
- <p>oo.celltype(row,col) returns :formula if there is a formula in this cell.</p>
162
+ <p>oo.<strong>celltype</strong>(row,col) returns :formula if there is a formula in this cell.</p>
147
163
 
148
164
 
149
- <p>oo.formula?(row,col) returns true if there is a formula</p>
165
+ <p>oo.<strong>formula?</strong>(row,col) returns true if there is a formula</p>
150
166
 
151
167
 
152
- <p>oo.formula(row,col) returns the formula in this cell in a string variable (like &#8221;=<acronym title="[.A1:.M13]">SUM</acronym>&#8221;). You can do whatever you want with this expression.
168
+ <p>oo.<strong>formula</strong>(row,col) returns the formula in this cell in a string variable (like &#8221;=<acronym title="[.A1:.M13]">SUM</acronym>&#8221;). You can do whatever you want with this expression.
153
169
  If there is no formula in this cell nil is returned.</p>
154
170
 
155
171
 
156
- <p>oo.cell(row,col) returns the computed result of the formula (as it was saved in the file, no recalculation is done in this Gem).</p>
172
+ <p>oo.<strong>cell</strong>(row,col) returns the computed result of the formula (as it was saved in the file, no recalculation is done in this Gem).</p>
173
+
157
174
 
175
+ <p>oo.<strong>formulas</strong> returns all formulas in the selected spreadsheet in an array like this:</p>
158
176
 
159
- <p>oo.formulas returns all formulas in the selected spreadsheet in an array like this:</p>
160
177
 
178
+ <pre>
179
+ <code>
180
+ [[1,2,"=SUM(.A1:.B1)"],
181
+ [1,3,"=SIN(.C3)"],
182
+ [1,4,"=COS(.D4)"]]
183
+ </code>
184
+ </pre>
161
185
 
162
- <p>Each entry consists of the elements row, col, formual.</p>
186
+ <p>Each entry consists of the elements row, col, formula.</p>
163
187
 
164
188
 
165
- <p>Note: oo.cell(row,col) is the same for ordinary cells and formulas. So you can use the computated value of a formula. If you have to distinguish if a cell is a formula use #formula?</p>
189
+ <p>Note: oo.<strong>cell</strong>(row,col) is the same for ordinary cells and formulas. So you can use the computated value of a formula. If you have to distinguish if a cell is a formula use #<strong>formula</strong>?</p>
166
190
 
167
191
 
168
192
  <p>Please note: formulas in Excel-Spreadsheets cannot be handled (this is another gem, see: &#8220;Thanks&#8221;)</p>
@@ -206,6 +230,9 @@ Replace Openoffice with
206
230
  is the setting of the default-worksheet. OpenOffice uses the name of the worksheet whereas Excel needs the index of the worksheet (1,2,3,..).</p>
207
231
 
208
232
 
233
+ <p><span class="caps">EDIT</span>: since the release 0.4.2, default_sheet in Excel-object can be handled with names like the Openoffice-sheet.</p>
234
+
235
+
209
236
  <p>Formulas can only be handled in OpenOffice-spreadsheets.</p>
210
237
 
211
238
 
@@ -221,7 +248,7 @@ is the setting of the default-worksheet. OpenOffice uses the name of the workshe
221
248
  <tr>
222
249
  <td>default_sheet</td>
223
250
  <td>as name</td>
224
- <td>as number</td>
251
+ <td>as number or name (&gt;=0.4.2)</td>
225
252
  </tr>
226
253
  <tr>
227
254
  <td>formulas</td>
@@ -238,7 +265,14 @@ is the setting of the default-worksheet. OpenOffice uses the name of the workshe
238
265
 
239
266
 
240
267
 
241
- <p>Old .sxc OpenOffice files are currently not supported &#8211; please load these files and save as an &#8220;OpenDocument Spreadsheet (.ods)&#8221;.</p>
268
+ <p>Old .sxc OpenOffice files are currently not supported &#8211; please load these files and save it as an &#8220;OpenDocument Spreadsheet (.ods)&#8221;.</p>
269
+
270
+
271
+ <h3>Remote Access</h3>
272
+
273
+
274
+ <p>You can even access your spreadsheet data from a remote machine via <span class="caps">SOAP</span>. The examples directory shows a little example how to do this. If you like, you can extend these functions or restrict the access to certain cells.
275
+ Remote access with <span class="caps">SOAP</span> is nothing specific to roo, you can do this with every Rub object, but i thought it would nice to give an example what could be done with roo.</p>
242
276
 
243
277
 
244
278
  <h2>Where is it used?</h2>
@@ -285,6 +319,15 @@ is the setting of the default-worksheet. OpenOffice uses the name of the workshe
285
319
  <p><a href="http://roo.rubyforge.org/wiki/wiki.pl">http://roo.rubyforge.org/wiki/wiki.pl</a></p>
286
320
 
287
321
 
322
+ <h2>How to submit patches</h2>
323
+
324
+
325
+ <p>Read the <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/">8 steps for fixing other people&#8217;s code</a> and for section <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups">8b: Submit patch to Google Groups</a>, use the Google Group above.</p>
326
+
327
+
328
+ <p>The trunk repository is <code>svn://rubyforge.org/var/svn/gorank/trunk</code> for anonymous access.</p>
329
+
330
+
288
331
  <h2>License</h2>
289
332
 
290
333
 
@@ -302,11 +345,11 @@ is the setting of the default-worksheet. OpenOffice uses the name of the workshe
302
345
 
303
346
  <ul>
304
347
  <li><a href="http://rubyforge.org/users/nicwilliams/">Dr Nic Williams</a> for his wonderful gem &#8216;<a href="http://rubyforge.org/projects/newgem/">newgem</a>&#8217; which makes it very convenient to create, manage and publish Ruby gems</li>
305
- <li>for the Excel-part the &#8220;spreadsheet&#8217;:http://rubyforge.org/projects/spreadsheet/ gem is used. My functions are a convenient wrapper around the functions of this gem</li>
348
+ <li>for the Excel-part the <a href="http://rubyforge.org/projects/spreadsheet/">spreadsheet</a> gem is used. My functions are a convenient wrapper around the functions of this gem</li>
306
349
  <li>Dirk Huth f&uuml;rs Testen unter Windows</li>
307
350
  </ul>
308
351
  <p class="coda">
309
- <a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>, 27th June 2007<br>
352
+ <a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>, 20th July 2007<br>
310
353
  Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
311
354
  </p>
312
355
  </div>
@@ -87,28 +87,43 @@ to
87
87
  </code>
88
88
  </pre>
89
89
 
90
+ h3. Cell Types
91
+
92
+ oo.*celltype*(row,col) returns the type of a cell. Currently these types will be
93
+ returned:
94
+
95
+ * :float
96
+ * :string
97
+ * :date
98
+ * :percentage
99
+ * :formula
100
+
90
101
  h3. Formulas
91
102
 
92
103
  Formulas in Openoffice-Spreadsheets can be handled.
93
104
 
94
- oo.celltype(row,col) returns :formula if there is a formula in this cell.
105
+ oo.*celltype*(row,col) returns :formula if there is a formula in this cell.
95
106
 
96
- oo.formula?(row,col) returns true if there is a formula
107
+ oo.*formula?*(row,col) returns true if there is a formula
97
108
 
98
- oo.formula(row,col) returns the formula in this cell in a string variable (like "=SUM([.A1:.M13])"). You can do whatever you want with this expression.
109
+ oo.*formula*(row,col) returns the formula in this cell in a string variable (like "=SUM([.A1:.M13])"). You can do whatever you want with this expression.
99
110
  If there is no formula in this cell nil is returned.
100
111
 
101
- oo.cell(row,col) returns the computed result of the formula (as it was saved in the file, no recalculation is done in this Gem).
112
+ oo.*cell*(row,col) returns the computed result of the formula (as it was saved in the file, no recalculation is done in this Gem).
102
113
 
103
- oo.formulas returns all formulas in the selected spreadsheet in an array like this:
114
+ oo.*formulas* returns all formulas in the selected spreadsheet in an array like this:
104
115
 
116
+ <pre>
117
+ <code>
105
118
  [[1,2,"=SUM(.A1:.B1)"],
106
119
  [1,3,"=SIN(.C3)"],
107
120
  [1,4,"=COS(.D4)"]]
121
+ </code>
122
+ </pre>
108
123
 
109
- Each entry consists of the elements row, col, formual.
124
+ Each entry consists of the elements row, col, formula.
110
125
 
111
- Note: oo.cell(row,col) is the same for ordinary cells and formulas. So you can use the computated value of a formula. If you have to distinguish if a cell is a formula use #formula?
126
+ Note: oo.*cell*(row,col) is the same for ordinary cells and formulas. So you can use the computated value of a formula. If you have to distinguish if a cell is a formula use #*formula*?
112
127
 
113
128
  Please note: formulas in Excel-Spreadsheets cannot be handled (this is another gem, see: "Thanks")
114
129
 
@@ -141,17 +156,24 @@ Replace Openoffice with
141
156
  All methode are the same for OpenOffice and Excel-objects. The only difference
142
157
  is the setting of the default-worksheet. OpenOffice uses the name of the worksheet whereas Excel needs the index of the worksheet (1,2,3,..).
143
158
 
159
+ EDIT: since the release 0.4.2, default_sheet in Excel-object can be handled with names like the Openoffice-sheet.
160
+
144
161
  Formulas can only be handled in OpenOffice-spreadsheets.
145
162
 
146
163
  Features in OpenOffice and Excel:
147
164
 
148
165
  table(border:1px solid black).
149
166
  |feature|Open Office|Excel|
150
- |default_sheet|as name|as number|
167
+ |default_sheet|as name|as number or name (>=0.4.2)|
151
168
  |formulas|yes|no|
152
169
  |to_yaml|yes|yes|
153
170
 
154
- Old .sxc OpenOffice files are currently not supported - please load these files and save as an "OpenDocument Spreadsheet (.ods)".
171
+ Old .sxc OpenOffice files are currently not supported - please load these files and save it as an "OpenDocument Spreadsheet (.ods)".
172
+
173
+ h3. Remote Access
174
+
175
+ You can even access your spreadsheet data from a remote machine via SOAP. The examples directory shows a little example how to do this. If you like, you can extend these functions or restrict the access to certain cells.
176
+ Remote access with SOAP is nothing specific to roo, you can do this with every Rub object, but i thought it would nice to give an example what could be done with roo.
155
177
 
156
178
  h2. Where is it used?
157
179
 
@@ -183,6 +205,12 @@ h2. Wiki
183
205
 
184
206
  "http://roo.rubyforge.org/wiki/wiki.pl":http://roo.rubyforge.org/wiki/wiki.pl
185
207
 
208
+ h2. How to submit patches
209
+
210
+ Read the "8 steps for fixing other people's code":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/ and for section "8b: Submit patch to Google Groups":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups, use the Google Group above.
211
+
212
+ The trunk repository is <code>svn://rubyforge.org/var/svn/gorank/trunk</code> for anonymous access.
213
+
186
214
  h2. License
187
215
 
188
216
  This code is free to use under the terms of Ruby
@@ -194,5 +222,5 @@ Comments are welcome. Send an email to "Thomas Preymesser":mailto:thopre@gmail.c
194
222
  h2. Thanks
195
223
 
196
224
  * "Dr Nic Williams":http://rubyforge.org/users/nicwilliams/ for his wonderful gem '"newgem":http://rubyforge.org/projects/newgem/' which makes it very convenient to create, manage and publish Ruby gems
197
- * for the Excel-part the "spreadsheet':http://rubyforge.org/projects/spreadsheet/ gem is used. My functions are a convenient wrapper around the functions of this gem
225
+ * for the Excel-part the "spreadsheet":http://rubyforge.org/projects/spreadsheet/ gem is used. My functions are a convenient wrapper around the functions of this gem
198
226
  * Dirk Huth f&uuml;rs Testen unter Windows
@@ -1,5 +1,6 @@
1
1
  body {
2
- background-color: #E1D1F1;
2
+ /*background-color: #E1D1F1;*/
3
+ background-image: url(../spreadsheetbackground.png);
3
4
  font-family: "Georgia", sans-serif;
4
5
  font-size: 16px;
5
6
  line-height: 1.6em;
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: roo
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.4.1
7
- date: 2007-06-27 00:00:00 +02:00
6
+ version: 0.5.0
7
+ date: 2007-07-20 00:00:00 +02:00
8
8
  summary: roo can access the contents of OpenOffice-Spreadsheets
9
9
  require_paths:
10
10
  - lib
@@ -34,18 +34,24 @@ files:
34
34
  - Manifest.txt
35
35
  - README.txt
36
36
  - Rakefile
37
+ - base64include.rb
38
+ - examples/roo_soap_server.rb
39
+ - examples/roo_soap_client.rb
37
40
  - lib/roo.rb
38
41
  - lib/roo/version.rb
39
42
  - lib/roo/openoffice.rb
40
43
  - lib/roo/excel.rb
41
44
  - lib/roo/google.rb
42
- - lib/roo/spreadsheetparser.rb
43
45
  - scripts/txt2html
44
46
  - setup.rb
45
47
  - test/test_helper.rb
46
48
  - test/test_roo.rb
47
49
  - test/numbers1.ods
48
50
  - test/numbers1.xls
51
+ - test/borders.ods
52
+ - test/borders.xls
53
+ - test/formula.ods
54
+ - test/formula.xls
49
55
  - website/index.html
50
56
  - website/index.txt
51
57
  - website/javascripts/rounded_corners_lite.inc.js
@@ -77,7 +83,7 @@ dependencies:
77
83
  requirements:
78
84
  - - ">="
79
85
  - !ruby/object:Gem::Version
80
- version: 0.5.1.1
86
+ version: 0.5.2
81
87
  version:
82
88
  - !ruby/object:Gem::Dependency
83
89
  name: rubyzip
@@ -97,12 +103,3 @@ dependencies:
97
103
  - !ruby/object:Gem::Version
98
104
  version: "0.5"
99
105
  version:
100
- - !ruby/object:Gem::Dependency
101
- name: llip
102
- version_requirement:
103
- version_requirements: !ruby/object:Gem::Version::Requirement
104
- requirements:
105
- - - ">="
106
- - !ruby/object:Gem::Version
107
- version: 0.0.1
108
- version:
@@ -1,92 +0,0 @@
1
- =begin
2
- This is experimental. Please do not use it. IT WILL NOT WORK
3
- I don't know if i will extend the work on the evaluation of formulas.
4
- You can access all formulas as a string and do whatever you want with this.
5
- =end
6
-
7
- require 'rubygems'
8
- require 'llip'
9
- require 'llip/visitable'
10
-
11
- class Formula
12
- include LLIP::Visitable
13
-
14
- attr_accessor :name
15
- attr_accessor :params
16
- end
17
-
18
- class Param
19
- include LLIP::Visitable
20
-
21
- attr_accessor :column_name
22
- end
23
-
24
- class Visitor
25
- def visit_formula(formula)
26
- puts " -- " + formula.name
27
- formula.params.each { |p| p.accept(self) }
28
- end
29
-
30
- def visit_param(param)
31
- puts " |-- " + param.column_name
32
- end
33
- end
34
-
35
- class SpreadsheetParser < LLIP::Parser
36
- letters = ("A".."Z").to_a.join("|")
37
-
38
- token :id, "(#{letters})+"
39
-
40
- token :"(", '\('
41
-
42
- token :")", '\)'
43
-
44
- token :"[", '['
45
- token :"]", ']'
46
- token :".", '.'
47
-
48
- num = (1..9).to_a.join("|")
49
- token :num , "(#{num})(#{num}|0)*"
50
-
51
- token :sep, ":"
52
-
53
- scope :formula
54
-
55
- production :formula do |p|
56
- p.token(:id) do |result,scanner,parser|
57
- result = Formula.new
58
- result.name = scanner.current
59
- puts "<"+result.name+">"
60
- raise unless scanner.next == :"("
61
- raise unless scanner.next == :"["
62
- scanner.next
63
- result.params = parser.parse_params
64
- raise unless scanner.current == :"]"
65
- raise unless scanner.current == :")"
66
- scanner.next
67
- result
68
- end
69
- end
70
-
71
- production :params, :recursive do |p|
72
- p.default do |scanner, parser|
73
- []
74
- end
75
-
76
- p.token(:id) do |result, scanner, parser|
77
- param = Param.new
78
- param.column_name = scanner.current.to_s
79
- raise unless scanner.next == :"."
80
- raise unless scanner.next == :num
81
- param.column_name += scanner.current.to_s
82
- scanner.next
83
- result << param
84
- end
85
-
86
- p.token(:sep) do |result,scanner,parser|
87
- scanner.next
88
- result
89
- end
90
- end
91
-
92
- end