osheet 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/lib/osheet/cell.rb +5 -1
- data/lib/osheet/column.rb +1 -0
- data/lib/osheet/markup_element.rb +22 -0
- data/lib/osheet/meta_element.rb +1 -1
- data/lib/osheet/partial.rb +24 -0
- data/lib/osheet/partial_set.rb +57 -0
- data/lib/osheet/row.rb +1 -0
- data/lib/osheet/template.rb +10 -24
- data/lib/osheet/template_set.rb +6 -12
- data/lib/osheet/version.rb +1 -1
- data/lib/osheet/{template_handler → view_handler}/rails.rb +0 -0
- data/lib/osheet/{template_handler → view_handler}/tilt.rb +0 -0
- data/lib/osheet/view_handler.rb +2 -0
- data/lib/osheet/workbook.rb +9 -0
- data/lib/osheet/worksheet.rb +5 -1
- data/lib/osheet/xmlss_writer/elements.rb +1 -0
- data/lib/osheet.rb +9 -6
- data/test/cell_test.rb +69 -29
- data/test/column_test.rb +67 -36
- data/test/env.rb +1 -0
- data/test/partial_set_test.rb +84 -0
- data/test/partial_test.rb +66 -0
- data/test/rails/three/Gemfile.lock +1 -1
- data/test/rails/three/app/views/things/index.xls.osheet +0 -2
- data/test/rails/two/Gemfile.lock +1 -1
- data/test/row_test.rb +69 -38
- data/test/style_test.rb +37 -16
- data/test/template_set_test.rb +34 -15
- data/test/template_test.rb +28 -44
- data/test/workbook_test.rb +143 -97
- data/test/worksheet_test.rb +87 -47
- data/test/xmlss_writer/elements_test.rb +3 -1
- metadata +14 -7
- data/lib/osheet/template_handler.rb +0 -2
data/test/workbook_test.rb
CHANGED
@@ -3,13 +3,17 @@ require 'osheet/workbook'
|
|
3
3
|
require 'test/mixins'
|
4
4
|
|
5
5
|
module Osheet
|
6
|
+
|
6
7
|
class WorkbookTest < Test::Unit::TestCase
|
7
8
|
|
8
9
|
context "Osheet::Workbook" do
|
9
|
-
subject
|
10
|
+
subject do
|
11
|
+
Workbook.new
|
12
|
+
end
|
10
13
|
|
11
|
-
should_have_readers :styles, :templates
|
12
|
-
should_have_instance_methods :title, :
|
14
|
+
should_have_readers :styles, :templates, :partials
|
15
|
+
should_have_instance_methods :title, :attributes, :use, :add
|
16
|
+
should_have_instance_methods :style, :template, :partial
|
13
17
|
|
14
18
|
should_hm(Workbook, :worksheets, Worksheet)
|
15
19
|
|
@@ -18,128 +22,169 @@ module Osheet
|
|
18
22
|
assert_equal [], subject.worksheets
|
19
23
|
assert_equal StyleSet.new, subject.styles
|
20
24
|
assert_equal TemplateSet.new, subject.templates
|
25
|
+
assert_equal PartialSet.new, subject.partials
|
21
26
|
end
|
22
27
|
|
23
|
-
|
24
|
-
subject
|
25
|
-
|
26
|
-
|
28
|
+
should "know it's attribute(s)" do
|
29
|
+
subject.send(:title, "The Poo")
|
30
|
+
[:title].each do |a|
|
31
|
+
assert subject.attributes.has_key?(a)
|
32
|
+
end
|
33
|
+
assert_equal "The Poo", subject.attributes[:title]
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class WorkbookTitleTest < Test::Unit::TestCase
|
40
|
+
context "A workbook with a title" do
|
41
|
+
subject do
|
42
|
+
Workbook.new { title "The Poo" }
|
43
|
+
end
|
27
44
|
|
28
|
-
|
29
|
-
|
45
|
+
should "know it's title" do
|
46
|
+
assert_equal "The Poo", subject.title
|
47
|
+
end
|
48
|
+
|
49
|
+
should "set it's title" do
|
50
|
+
subject.title(false)
|
51
|
+
assert_equal false, subject.title
|
52
|
+
subject.title('la')
|
53
|
+
assert_equal 'la', subject.title
|
54
|
+
subject.title(nil)
|
55
|
+
assert_equal 'la', subject.title
|
56
|
+
end
|
30
57
|
|
31
|
-
|
58
|
+
end
|
59
|
+
end
|
32
60
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
61
|
+
class WorkbookWorksheetsTest < Test::Unit::TestCase
|
62
|
+
context "A workbook with worksheets" do
|
63
|
+
subject do
|
64
|
+
Workbook.new {
|
65
|
+
worksheet {
|
66
|
+
name "Poo!"
|
67
|
+
column
|
68
|
+
row {
|
69
|
+
cell {
|
70
|
+
format :number
|
71
|
+
data 1
|
38
72
|
}
|
39
73
|
}
|
40
74
|
}
|
41
|
-
|
75
|
+
}
|
76
|
+
end
|
42
77
|
|
43
|
-
|
44
|
-
|
45
|
-
|
78
|
+
should "set it's worksheets" do
|
79
|
+
assert_equal 1, subject.worksheets.size
|
80
|
+
assert_kind_of Worksheet, subject.worksheets.first
|
81
|
+
end
|
46
82
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
assert_equal 'la', subject.title
|
83
|
+
should "not allow multiple worksheets with the same name" do
|
84
|
+
assert_raises ArgumentError do
|
85
|
+
Workbook.new {
|
86
|
+
worksheet { name "awesome" }
|
87
|
+
worksheet { name "awesome" }
|
88
|
+
}
|
54
89
|
end
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
90
|
+
assert_nothing_raised do
|
91
|
+
Workbook.new {
|
92
|
+
worksheet { name "awesome" }
|
93
|
+
worksheet { name "awesome1" }
|
94
|
+
}
|
60
95
|
end
|
96
|
+
end
|
61
97
|
|
62
|
-
|
63
|
-
|
64
|
-
Workbook.new {
|
65
|
-
title "should fail"
|
66
|
-
|
67
|
-
worksheet { name "awesome" }
|
68
|
-
worksheet { name "awesome" }
|
69
|
-
}
|
70
|
-
end
|
71
|
-
assert_nothing_raised do
|
72
|
-
Workbook.new {
|
73
|
-
title "should not fail"
|
98
|
+
end
|
99
|
+
end
|
74
100
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
101
|
+
class WorkbookStyleTest < Test::Unit::TestCase
|
102
|
+
context "A workbook that defines styles" do
|
103
|
+
subject do
|
104
|
+
Workbook.new {
|
105
|
+
style('.test')
|
106
|
+
style('.test.awesome')
|
107
|
+
}
|
108
|
+
end
|
80
109
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
110
|
+
should "add them to it's styles" do
|
111
|
+
assert_equal 2, subject.styles.size
|
112
|
+
assert_equal 1, subject.styles.first.selectors.size
|
113
|
+
assert_equal '.test', subject.styles.first.selectors.first
|
114
|
+
assert_equal 1, subject.styles.last.selectors.size
|
115
|
+
assert_equal '.test.awesome', subject.styles.last.selectors.first
|
87
116
|
end
|
88
117
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
class WorkbookPartialTest < Test::Unit::TestCase
|
122
|
+
context "A workbook that defines partials" do
|
123
|
+
subject do
|
124
|
+
Workbook.new {
|
125
|
+
partial(:named_styles) { |name|
|
126
|
+
style(".#{name}")
|
127
|
+
style(".#{name}.awesome")
|
94
128
|
}
|
95
|
-
|
129
|
+
partial(:stuff) {}
|
130
|
+
}
|
131
|
+
end
|
96
132
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
assert_equal '.test.awesome', subject.styles.last.selectors.first
|
103
|
-
end
|
133
|
+
should "add them to it's partials" do
|
134
|
+
assert_equal 2, subject.partials.keys.size
|
135
|
+
assert subject.partials.has_key?('named_styles')
|
136
|
+
assert subject.partials.has_key?('stuff')
|
137
|
+
assert_kind_of Partial, subject.partials.get('stuff')
|
104
138
|
end
|
105
139
|
|
106
|
-
|
107
|
-
subject
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
140
|
+
should "add it's partials to it's markup" do
|
141
|
+
subject.add(:named_styles, 'test')
|
142
|
+
assert_equal 2, subject.styles.size
|
143
|
+
assert_equal '.test', subject.styles.first.selectors.first
|
144
|
+
assert_equal '.test.awesome', subject.styles.last.selectors.first
|
145
|
+
end
|
146
|
+
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
class WorkbookTemplateTest < Test::Unit::TestCase
|
151
|
+
context "A workbook that defines templates" do
|
152
|
+
subject do
|
153
|
+
Workbook.new {
|
154
|
+
template(:column, :yo) { |color|
|
155
|
+
width 200
|
156
|
+
meta(:color => color)
|
120
157
|
}
|
121
|
-
|
158
|
+
template(:row, :yo_yo) {
|
159
|
+
height 500
|
160
|
+
}
|
161
|
+
template(:worksheet, :go) {
|
162
|
+
column(:yo, 'blue')
|
163
|
+
row(:yo_yo)
|
164
|
+
}
|
165
|
+
}
|
166
|
+
end
|
122
167
|
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
subject.worksheet(:go)
|
132
|
-
assert_equal 1, subject.worksheets.size
|
133
|
-
assert_equal 'blue', subject.worksheets.first.columns.first.meta[:color]
|
134
|
-
assert_equal 500, subject.worksheets.first.rows.first.attributes[:height]
|
135
|
-
end
|
168
|
+
should "add them to it's templates" do
|
169
|
+
assert subject.templates
|
170
|
+
assert_kind_of TemplateSet, subject.templates
|
171
|
+
assert_equal 3, subject.templates.keys.size
|
172
|
+
assert_kind_of Template, subject.templates.get('column', 'yo')
|
173
|
+
assert_kind_of Template, subject.templates.get('row', 'yo_yo')
|
174
|
+
assert_kind_of Template, subject.templates.get('worksheet', 'go')
|
136
175
|
end
|
137
176
|
|
138
|
-
|
177
|
+
should "apply it's templates" do
|
178
|
+
subject.worksheet(:go)
|
179
|
+
assert_equal 1, subject.worksheets.size
|
180
|
+
assert_equal 'blue', subject.worksheets.first.columns.first.meta[:color]
|
181
|
+
assert_equal 500, subject.worksheets.first.rows.first.attributes[:height]
|
182
|
+
end
|
139
183
|
|
184
|
+
end
|
140
185
|
end
|
141
186
|
|
142
|
-
class
|
187
|
+
class WorkbookBindingTest < Test::Unit::TestCase
|
143
188
|
context "a workbook defined w/ a block" do
|
144
189
|
should "access instance vars from that block's binding" do
|
145
190
|
@test = 'test'
|
@@ -151,6 +196,7 @@ module Osheet
|
|
151
196
|
assert_equal @test, @workbook.attributes[:title]
|
152
197
|
assert_equal @test.object_id, @workbook.attributes[:title].object_id
|
153
198
|
end
|
199
|
+
|
154
200
|
end
|
155
201
|
end
|
156
202
|
|
data/test/worksheet_test.rb
CHANGED
@@ -2,8 +2,8 @@ require "test/helper"
|
|
2
2
|
require 'osheet/worksheet'
|
3
3
|
|
4
4
|
module Osheet
|
5
|
-
class WorksheetTest < Test::Unit::TestCase
|
6
5
|
|
6
|
+
class WorksheetTest < Test::Unit::TestCase
|
7
7
|
context "Osheet::Worksheet" do
|
8
8
|
subject { Worksheet.new }
|
9
9
|
|
@@ -23,63 +23,102 @@ module Osheet
|
|
23
23
|
should_hm(Worksheet, :columns, Column)
|
24
24
|
should_hm(Worksheet, :rows, Row)
|
25
25
|
|
26
|
-
|
27
|
-
subject
|
28
|
-
|
29
|
-
|
30
|
-
meta(
|
31
|
-
{}
|
32
|
-
)
|
33
|
-
|
34
|
-
column
|
35
|
-
|
36
|
-
row do
|
37
|
-
cell do
|
38
|
-
format :number
|
39
|
-
data 1
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
26
|
+
should "know it's attribute(s)" do
|
27
|
+
subject.send(:name, "Poo!")
|
28
|
+
[:name].each do |a|
|
29
|
+
assert subject.attributes.has_key?(a)
|
43
30
|
end
|
31
|
+
assert_equal "Poo!", subject.attributes[:name]
|
32
|
+
end
|
44
33
|
|
45
|
-
|
46
|
-
|
47
|
-
assert_equal({}, subject.meta)
|
48
|
-
end
|
34
|
+
end
|
35
|
+
end
|
49
36
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
37
|
+
class WorksheetNameMetaTest < Test::Unit::TestCase
|
38
|
+
context "A named worksheet with meta" do
|
39
|
+
subject do
|
40
|
+
Worksheet.new {
|
41
|
+
name "Poo!"
|
42
|
+
meta({})
|
43
|
+
}
|
44
|
+
end
|
45
|
+
|
46
|
+
should "know it's name and meta" do
|
47
|
+
assert_equal "Poo!", subject.send(:get_ivar, "name")
|
48
|
+
assert_equal({}, subject.meta)
|
49
|
+
end
|
58
50
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
51
|
+
should "set it's name" do
|
52
|
+
subject.name(false)
|
53
|
+
assert_equal 'false', subject.name
|
54
|
+
subject.name('la')
|
55
|
+
assert_equal 'la', subject.name
|
56
|
+
subject.name(nil)
|
57
|
+
assert_equal 'la', subject.name
|
58
|
+
end
|
59
|
+
|
60
|
+
should "complain if name is longer than 31 chars" do
|
61
|
+
assert_raises ArgumentError do
|
62
|
+
subject.name('a'*32)
|
64
63
|
end
|
65
|
-
|
66
|
-
|
67
|
-
assert_equal 1, columns.size
|
68
|
-
assert_kind_of Column, columns.first
|
69
|
-
assert_equal subject.columns, columns.first.columns
|
64
|
+
assert_nothing_raised do
|
65
|
+
subject.name('a'*31)
|
70
66
|
end
|
67
|
+
end
|
71
68
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
class WorksheetColumnRowTest < Test::Unit::TestCase
|
73
|
+
context "A worksheet that has columns and rows" do
|
74
|
+
subject do
|
75
|
+
Worksheet.new {
|
76
|
+
column
|
77
|
+
row { cell {
|
78
|
+
format :number
|
79
|
+
data 1
|
80
|
+
} }
|
81
|
+
}
|
82
|
+
end
|
83
|
+
|
84
|
+
should "set it's columns" do
|
85
|
+
columns = subject.columns
|
86
|
+
assert_equal 1, columns.size
|
87
|
+
assert_kind_of Column, columns.first
|
88
|
+
assert_equal subject.columns, columns.first.columns
|
89
|
+
end
|
90
|
+
|
91
|
+
should "set it's rows" do
|
92
|
+
rows = subject.rows
|
93
|
+
assert_equal 1, rows.size
|
94
|
+
assert_kind_of Row, rows.first
|
95
|
+
assert_equal subject.columns, rows.first.columns
|
96
|
+
assert_equal subject.columns, rows.first.cells.first.columns
|
79
97
|
end
|
80
98
|
|
81
99
|
end
|
100
|
+
end
|
101
|
+
|
102
|
+
class WorkbookPartialTest < Test::Unit::TestCase
|
103
|
+
context "A workbook that defines worksheet partials" do
|
104
|
+
subject do
|
105
|
+
Workbook.new {
|
106
|
+
partial(:worksheet_stuff) {
|
107
|
+
row {}
|
108
|
+
row {}
|
109
|
+
}
|
110
|
+
|
111
|
+
worksheet {
|
112
|
+
add :worksheet_stuff
|
113
|
+
}
|
114
|
+
}
|
115
|
+
end
|
82
116
|
|
117
|
+
should "add it's partials to it's markup" do
|
118
|
+
assert_equal 2, subject.worksheets.first.rows.size
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
83
122
|
end
|
84
123
|
|
85
124
|
class WorksheetBindingTest < Test::Unit::TestCase
|
@@ -94,6 +133,7 @@ module Osheet
|
|
94
133
|
assert_equal @test, @worksheet.attributes[:name]
|
95
134
|
assert_equal @test.object_id, @worksheet.attributes[:name].object_id
|
96
135
|
end
|
136
|
+
|
97
137
|
end
|
98
138
|
end
|
99
139
|
|
@@ -129,6 +129,7 @@ module Osheet
|
|
129
129
|
href 'http://example.com'
|
130
130
|
rowspan 2
|
131
131
|
colspan 5
|
132
|
+
index 3
|
132
133
|
end
|
133
134
|
subject.workbook = Workbook.new {
|
134
135
|
style('.awesome') {
|
@@ -150,6 +151,7 @@ module Osheet
|
|
150
151
|
assert_equal @cell.attributes[:data], @xmlss_cell.data.value
|
151
152
|
assert_equal ::Xmlss::Data.type(:number), @xmlss_cell.data.type
|
152
153
|
assert_equal 'http://example.com', @xmlss_cell.href
|
154
|
+
assert_equal 3, @xmlss_cell.index
|
153
155
|
end
|
154
156
|
|
155
157
|
should "handle rowspan and colspan" do
|
@@ -165,4 +167,4 @@ module Osheet
|
|
165
167
|
end
|
166
168
|
end
|
167
169
|
|
168
|
-
end
|
170
|
+
end
|
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: 7
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 6
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.6.0
|
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-04-
|
18
|
+
date: 2011-04-20 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -196,19 +196,22 @@ files:
|
|
196
196
|
- lib/osheet/format/special.rb
|
197
197
|
- lib/osheet/format/text.rb
|
198
198
|
- lib/osheet/instance.rb
|
199
|
+
- lib/osheet/markup_element.rb
|
199
200
|
- lib/osheet/meta_element.rb
|
200
201
|
- lib/osheet/mixin.rb
|
202
|
+
- lib/osheet/partial.rb
|
203
|
+
- lib/osheet/partial_set.rb
|
201
204
|
- lib/osheet/railtie.rb
|
202
205
|
- lib/osheet/row.rb
|
203
206
|
- lib/osheet/style.rb
|
204
207
|
- lib/osheet/style_set.rb
|
205
208
|
- lib/osheet/styled_element.rb
|
206
209
|
- lib/osheet/template.rb
|
207
|
-
- lib/osheet/template_handler.rb
|
208
|
-
- lib/osheet/template_handler/rails.rb
|
209
|
-
- lib/osheet/template_handler/tilt.rb
|
210
210
|
- lib/osheet/template_set.rb
|
211
211
|
- lib/osheet/version.rb
|
212
|
+
- lib/osheet/view_handler.rb
|
213
|
+
- lib/osheet/view_handler/rails.rb
|
214
|
+
- lib/osheet/view_handler/tilt.rb
|
212
215
|
- lib/osheet/workbook.rb
|
213
216
|
- lib/osheet/workbook_element.rb
|
214
217
|
- lib/osheet/worksheet.rb
|
@@ -238,6 +241,8 @@ files:
|
|
238
241
|
- test/mixin_test.rb
|
239
242
|
- test/mixins.rb
|
240
243
|
- test/osheet_test.rb
|
244
|
+
- test/partial_set_test.rb
|
245
|
+
- test/partial_test.rb
|
241
246
|
- test/rails/three/.gitignore
|
242
247
|
- test/rails/three/Gemfile
|
243
248
|
- test/rails/three/Gemfile.lock
|
@@ -372,6 +377,8 @@ test_files:
|
|
372
377
|
- test/mixin_test.rb
|
373
378
|
- test/mixins.rb
|
374
379
|
- test/osheet_test.rb
|
380
|
+
- test/partial_set_test.rb
|
381
|
+
- test/partial_test.rb
|
375
382
|
- test/rails/three/.gitignore
|
376
383
|
- test/rails/three/Gemfile
|
377
384
|
- test/rails/three/Gemfile.lock
|