osheet 0.5.0 → 0.6.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.
- 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
|