roo 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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