osheet 0.9.0 → 0.9.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.
- data/Gemfile.lock +1 -1
- data/examples/formula.rb +39 -0
- data/lib/osheet/cell.rb +4 -1
- data/lib/osheet/version.rb +1 -1
- data/lib/osheet/xmlss_writer/elements.rb +2 -1
- data/test/cell_test.rb +7 -3
- data/test/xmlss_writer/elements_test.rb +2 -0
- metadata +5 -4
data/Gemfile.lock
CHANGED
data/examples/formula.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# To run:
|
2
|
+
# $ bundle install
|
3
|
+
# $ bundle exec ruby examples/formula.rb
|
4
|
+
# $ open examples/formula.xls
|
5
|
+
|
6
|
+
require 'rubygems'
|
7
|
+
require 'osheet'
|
8
|
+
|
9
|
+
|
10
|
+
# this will dump the above data to a single-sheet workbook w/ no styles
|
11
|
+
|
12
|
+
Osheet::Workbook.new {
|
13
|
+
title "formula example"
|
14
|
+
worksheet {
|
15
|
+
name "Formula"
|
16
|
+
row {
|
17
|
+
cell { data 1 }
|
18
|
+
cell { data 2 }
|
19
|
+
# please note formulas use R1C1 notation
|
20
|
+
# check out for example http://www.bettersolutions.com/excel/EED883/YI416010881.htm
|
21
|
+
# this is absolute reference, ie. =$A$1+$B$1
|
22
|
+
cell { formula "=R1C1+R1C2" }
|
23
|
+
}
|
24
|
+
}
|
25
|
+
worksheet {
|
26
|
+
name "Refers to previous sheet"
|
27
|
+
row {
|
28
|
+
cell { data 3 }
|
29
|
+
cell { data 4 }
|
30
|
+
cell {
|
31
|
+
# you can still refer to cells in other sheets through the name of the sheet and !
|
32
|
+
# this is also a relative reference, ie. =Formula!A1+B2
|
33
|
+
formula "=Formula!RC[-2]+RC[-1]"
|
34
|
+
# 6 will change into 5 when formula gets recalculated
|
35
|
+
data 6
|
36
|
+
}
|
37
|
+
}
|
38
|
+
}
|
39
|
+
}.to_file('examples/formula.xls')
|
data/lib/osheet/cell.rb
CHANGED
@@ -18,6 +18,7 @@ module Osheet
|
|
18
18
|
set_ivar(:colspan, 1)
|
19
19
|
set_ivar(:href, nil)
|
20
20
|
set_ivar(:index, nil)
|
21
|
+
set_ivar(:formula, nil)
|
21
22
|
if block_given?
|
22
23
|
set_binding_ivars(block.binding)
|
23
24
|
instance_exec(*args, &block)
|
@@ -43,6 +44,7 @@ module Osheet
|
|
43
44
|
def colspan(value); set_ivar(:colspan, value); end
|
44
45
|
def href(value); set_ivar(:href, value); end
|
45
46
|
def index(value); set_ivar(:index, value); end
|
47
|
+
def formula(value); set_ivar(:formula, value); end
|
46
48
|
|
47
49
|
def attributes
|
48
50
|
{
|
@@ -52,7 +54,8 @@ module Osheet
|
|
52
54
|
:colspan => get_ivar(:colspan),
|
53
55
|
:rowspan => get_ivar(:rowspan),
|
54
56
|
:href => get_ivar(:href),
|
55
|
-
:index => get_ivar(:index)
|
57
|
+
:index => get_ivar(:index),
|
58
|
+
:formula => get_ivar(:formula)
|
56
59
|
}
|
57
60
|
end
|
58
61
|
|
data/lib/osheet/version.rb
CHANGED
@@ -56,7 +56,8 @@ module Osheet::XmlssWriter::Elements
|
|
56
56
|
:index => ocell.attributes[:index],
|
57
57
|
:merge_across => cell_merge(ocell.attributes[:colspan]),
|
58
58
|
:merge_down => cell_merge(ocell.attributes[:rowspan]),
|
59
|
-
:data => data(ocell.attributes[:data])
|
59
|
+
:data => data(ocell.attributes[:data]),
|
60
|
+
:formula => ocell.attributes[:formula]
|
60
61
|
})
|
61
62
|
end
|
62
63
|
def cell_merge(span)
|
data/test/cell_test.rb
CHANGED
@@ -21,6 +21,7 @@ module Osheet
|
|
21
21
|
assert_equal 1, subject.send(:get_ivar, "rowspan")
|
22
22
|
assert_equal nil, subject.send(:get_ivar, "href")
|
23
23
|
assert_equal nil, subject.send(:get_ivar, "index")
|
24
|
+
assert_equal nil, subject.send(:get_ivar, "formuala")
|
24
25
|
end
|
25
26
|
|
26
27
|
should "type cast data strings/symbols" do
|
@@ -61,6 +62,7 @@ module Osheet
|
|
61
62
|
colspan 4
|
62
63
|
rowspan 2
|
63
64
|
index 3
|
65
|
+
formula "=R1C1"
|
64
66
|
href "http://www.google.com"
|
65
67
|
end
|
66
68
|
end
|
@@ -68,9 +70,10 @@ module Osheet
|
|
68
70
|
should "should set them correctly" do
|
69
71
|
assert_equal "Poo", subject.send(:get_ivar, "data")
|
70
72
|
assert_kind_of Format::Number, subject.send(:get_ivar, "format")
|
71
|
-
assert_equal 4,
|
72
|
-
assert_equal 2,
|
73
|
-
assert_equal 3,
|
73
|
+
assert_equal 4, subject.send(:get_ivar, "colspan")
|
74
|
+
assert_equal 2, subject.send(:get_ivar, "rowspan")
|
75
|
+
assert_equal 3, subject.send(:get_ivar, "index")
|
76
|
+
assert_equal "=R1C1", subject.send(:get_ivar, "formula")
|
74
77
|
assert_equal "http://www.google.com", subject.send(:get_ivar, "href")
|
75
78
|
end
|
76
79
|
|
@@ -85,6 +88,7 @@ module Osheet
|
|
85
88
|
assert_equal 4, subject.attributes[:colspan]
|
86
89
|
assert_equal 2, subject.attributes[:rowspan]
|
87
90
|
assert_equal 3, subject.attributes[:index]
|
91
|
+
assert_equal "=R1C1", subject.attributes[:formula]
|
88
92
|
assert_equal "http://www.google.com", subject.attributes[:href]
|
89
93
|
end
|
90
94
|
|
@@ -132,6 +132,7 @@ module Osheet
|
|
132
132
|
rowspan 2
|
133
133
|
colspan 5
|
134
134
|
index 3
|
135
|
+
formula "=R1C1"
|
135
136
|
end
|
136
137
|
subject.workbook = Workbook.new {
|
137
138
|
style('.awesome') {
|
@@ -154,6 +155,7 @@ module Osheet
|
|
154
155
|
assert_equal ::Xmlss::Data.type(:number), @xmlss_cell.data.type
|
155
156
|
assert_equal 'http://example.com', @xmlss_cell.href
|
156
157
|
assert_equal 3, @xmlss_cell.index
|
158
|
+
assert_equal "=R1C1", @xmlss_cell.formula
|
157
159
|
end
|
158
160
|
|
159
161
|
should "handle rowspan and colspan" do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: osheet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 57
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 9
|
9
|
-
-
|
10
|
-
version: 0.9.
|
9
|
+
- 1
|
10
|
+
version: 0.9.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Kelly Redding
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-11-16 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
type: :development
|
@@ -95,6 +95,7 @@ files:
|
|
95
95
|
- examples/basic.rb
|
96
96
|
- examples/basic_with_templates.rb
|
97
97
|
- examples/formats.rb
|
98
|
+
- examples/formula.rb
|
98
99
|
- examples/styles.rb
|
99
100
|
- examples/trivial.rb
|
100
101
|
- lib/osheet.rb
|