osheet 0.10.0 → 1.0.0.rc.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. data/Gemfile +0 -1
  2. data/Gemfile.lock +9 -6
  3. data/Rakefile +35 -19
  4. data/bench/bench_runner.rb +91 -0
  5. data/bench/profiler_runner.rb +1 -0
  6. data/examples/basic.rb +1 -1
  7. data/examples/basic.xls +2 -1
  8. data/examples/basic_with_templates.rb +2 -2
  9. data/examples/basic_with_templates.xls +3 -3
  10. data/examples/formats.rb +2 -2
  11. data/examples/formats.xls +46 -46
  12. data/examples/formula.rb +2 -2
  13. data/examples/styles.rb +2 -2
  14. data/examples/styles.xls +5 -5
  15. data/examples/trivial.rb +2 -2
  16. data/lib/osheet/cell.rb +48 -46
  17. data/lib/osheet/column.rb +23 -29
  18. data/lib/osheet/format.rb +3 -3
  19. data/lib/osheet/meta_element.rb +2 -1
  20. data/lib/osheet/mixin.rb +21 -9
  21. data/lib/osheet/partial.rb +5 -9
  22. data/lib/osheet/row.rb +28 -32
  23. data/lib/osheet/style.rb +11 -25
  24. data/lib/osheet/styled_element.rb +9 -1
  25. data/lib/osheet/template.rb +3 -8
  26. data/lib/osheet/version.rb +1 -1
  27. data/lib/osheet/workbook.rb +135 -43
  28. data/lib/osheet/workbook_api.rb +208 -0
  29. data/lib/osheet/workbook_element.rb +225 -8
  30. data/lib/osheet/worksheet.rb +22 -28
  31. data/lib/osheet/xmlss_writer/style_cache.rb +64 -0
  32. data/lib/osheet/xmlss_writer/style_settings.rb +148 -0
  33. data/lib/osheet/xmlss_writer.rb +143 -1
  34. data/lib/osheet.rb +3 -29
  35. data/osheet.gemspec +4 -1
  36. data/test/cell_test.rb +33 -98
  37. data/test/column_test.rb +20 -88
  38. data/test/{mixins.rb → fixtures/mixins.rb} +6 -4
  39. data/test/fixtures/test_writer.rb +68 -0
  40. data/test/format_test.rb +2 -2
  41. data/test/helper.rb +34 -68
  42. data/test/mixin_test.rb +37 -43
  43. data/test/partial_test.rb +3 -26
  44. data/test/row_test.rb +32 -85
  45. data/test/style_test.rb +9 -26
  46. data/test/template_test.rb +5 -6
  47. data/test/workbook_element_test.rb +231 -0
  48. data/test/workbook_test.rb +225 -116
  49. data/test/worksheet_test.rb +51 -98
  50. data/test/xmlss_writer/api_test.rb +139 -0
  51. data/test/xmlss_writer/style_cache_test.rb +65 -0
  52. data/test/xmlss_writer/style_settings_test.rb +263 -0
  53. data/test/xmlss_writer/styles_test.rb +121 -153
  54. data/test/xmlss_writer_test.rb +91 -0
  55. metadata +75 -50
  56. data/lib/osheet/associations.rb +0 -58
  57. data/lib/osheet/instance.rb +0 -30
  58. data/lib/osheet/markup_element.rb +0 -22
  59. data/lib/osheet/partial_set.rb +0 -57
  60. data/lib/osheet/railtie.rb +0 -9
  61. data/lib/osheet/style_set.rb +0 -39
  62. data/lib/osheet/template_set.rb +0 -51
  63. data/lib/osheet/view_handler/rails.rb +0 -44
  64. data/lib/osheet/view_handler/tilt.rb +0 -42
  65. data/lib/osheet/view_handler.rb +0 -2
  66. data/lib/osheet/worksheet_element.rb +0 -17
  67. data/lib/osheet/xmlss_writer/base.rb +0 -49
  68. data/lib/osheet/xmlss_writer/elements.rb +0 -56
  69. data/lib/osheet/xmlss_writer/styles.rb +0 -216
  70. data/test/osheet_test.rb +0 -13
  71. data/test/partial_set_test.rb +0 -64
  72. data/test/style_set_test.rb +0 -47
  73. data/test/template_set_test.rb +0 -74
  74. data/test/xmlss_writer/base_test.rb +0 -103
  75. data/test/xmlss_writer/elements_test.rb +0 -172
metadata CHANGED
@@ -1,13 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: osheet
3
3
  version: !ruby/object:Gem::Version
4
- hash: 55
5
- prerelease:
4
+ hash: 15424055
5
+ prerelease: 6
6
6
  segments:
7
+ - 1
7
8
  - 0
8
- - 10
9
9
  - 0
10
- version: 0.10.0
10
+ - rc
11
+ - 1
12
+ version: 1.0.0.rc.1
11
13
  platform: ruby
12
14
  authors:
13
15
  - Kelly Redding
@@ -15,11 +17,10 @@ autorequire:
15
17
  bindir: bin
16
18
  cert_chain: []
17
19
 
18
- date: 2012-01-10 00:00:00 Z
20
+ date: 2012-03-15 00:00:00 Z
19
21
  dependencies:
20
22
  - !ruby/object:Gem::Dependency
21
23
  type: :development
22
- prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
24
25
  none: false
25
26
  requirements:
@@ -30,11 +31,11 @@ dependencies:
30
31
  - 1
31
32
  - 0
32
33
  version: "1.0"
33
- version_requirements: *id001
34
34
  name: bundler
35
+ version_requirements: *id001
36
+ prerelease: false
35
37
  - !ruby/object:Gem::Dependency
36
38
  type: :development
37
- prerelease: false
38
39
  requirement: &id002 !ruby/object:Gem::Requirement
39
40
  none: false
40
41
  requirements:
@@ -45,12 +46,41 @@ dependencies:
45
46
  - 0
46
47
  - 3
47
48
  version: "0.3"
48
- version_requirements: *id002
49
49
  name: assert
50
- - !ruby/object:Gem::Dependency
51
- type: :runtime
50
+ version_requirements: *id002
52
51
  prerelease: false
52
+ - !ruby/object:Gem::Dependency
53
+ type: :development
53
54
  requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ~>
58
+ - !ruby/object:Gem::Version
59
+ hash: 11
60
+ segments:
61
+ - 0
62
+ - 0
63
+ version: "0.0"
64
+ name: whysoslow
65
+ version_requirements: *id003
66
+ prerelease: false
67
+ - !ruby/object:Gem::Dependency
68
+ type: :development
69
+ requirement: &id004 !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ hash: 3
75
+ segments:
76
+ - 0
77
+ version: "0"
78
+ name: ruby-prof
79
+ version_requirements: *id004
80
+ prerelease: false
81
+ - !ruby/object:Gem::Dependency
82
+ type: :runtime
83
+ requirement: &id005 !ruby/object:Gem::Requirement
54
84
  none: false
55
85
  requirements:
56
86
  - - ~>
@@ -60,23 +90,26 @@ dependencies:
60
90
  - 1
61
91
  - 3
62
92
  version: "1.3"
63
- version_requirements: *id003
64
93
  name: enumeration
94
+ version_requirements: *id005
95
+ prerelease: false
65
96
  - !ruby/object:Gem::Dependency
66
97
  type: :runtime
67
- prerelease: false
68
- requirement: &id004 !ruby/object:Gem::Requirement
98
+ requirement: &id006 !ruby/object:Gem::Requirement
69
99
  none: false
70
100
  requirements:
71
101
  - - ~>
72
102
  - !ruby/object:Gem::Version
73
- hash: 3
103
+ hash: 7712010
74
104
  segments:
105
+ - 1
75
106
  - 0
76
- - 4
77
- version: "0.4"
78
- version_requirements: *id004
107
+ - 0
108
+ - rc
109
+ version: 1.0.0.rc
79
110
  name: xmlss
111
+ version_requirements: *id006
112
+ prerelease: false
80
113
  description: A DSL for specifying and generating spreadsheets using Ruby
81
114
  email:
82
115
  - kelly@kellyredding.com
@@ -92,6 +125,7 @@ files:
92
125
  - Gemfile.lock
93
126
  - README.rdoc
94
127
  - Rakefile
128
+ - bench/bench_runner.rb
95
129
  - bench/profiler.rb
96
130
  - bench/profiler_1000.xls
97
131
  - bench/profiler_runner.rb
@@ -108,7 +142,6 @@ files:
108
142
  - examples/trivial.rb
109
143
  - examples/trivial.xls
110
144
  - lib/osheet.rb
111
- - lib/osheet/associations.rb
112
145
  - lib/osheet/cell.rb
113
146
  - lib/osheet/column.rb
114
147
  - lib/osheet/format.rb
@@ -124,34 +157,26 @@ files:
124
157
  - lib/osheet/format/scientific.rb
125
158
  - lib/osheet/format/special.rb
126
159
  - lib/osheet/format/text.rb
127
- - lib/osheet/instance.rb
128
- - lib/osheet/markup_element.rb
129
160
  - lib/osheet/meta_element.rb
130
161
  - lib/osheet/mixin.rb
131
162
  - lib/osheet/partial.rb
132
- - lib/osheet/partial_set.rb
133
- - lib/osheet/railtie.rb
134
163
  - lib/osheet/row.rb
135
164
  - lib/osheet/style.rb
136
- - lib/osheet/style_set.rb
137
165
  - lib/osheet/styled_element.rb
138
166
  - lib/osheet/template.rb
139
- - lib/osheet/template_set.rb
140
167
  - lib/osheet/version.rb
141
- - lib/osheet/view_handler.rb
142
- - lib/osheet/view_handler/rails.rb
143
- - lib/osheet/view_handler/tilt.rb
144
168
  - lib/osheet/workbook.rb
169
+ - lib/osheet/workbook_api.rb
145
170
  - lib/osheet/workbook_element.rb
146
171
  - lib/osheet/worksheet.rb
147
- - lib/osheet/worksheet_element.rb
148
172
  - lib/osheet/xmlss_writer.rb
149
- - lib/osheet/xmlss_writer/base.rb
150
- - lib/osheet/xmlss_writer/elements.rb
151
- - lib/osheet/xmlss_writer/styles.rb
173
+ - lib/osheet/xmlss_writer/style_cache.rb
174
+ - lib/osheet/xmlss_writer/style_settings.rb
152
175
  - osheet.gemspec
153
176
  - test/cell_test.rb
154
177
  - test/column_test.rb
178
+ - test/fixtures/mixins.rb
179
+ - test/fixtures/test_writer.rb
155
180
  - test/format/accounting_test.rb
156
181
  - test/format/currency_test.rb
157
182
  - test/format/custom_test.rb
@@ -167,20 +192,18 @@ files:
167
192
  - test/helper.rb
168
193
  - test/irb.rb
169
194
  - test/mixin_test.rb
170
- - test/mixins.rb
171
- - test/osheet_test.rb
172
- - test/partial_set_test.rb
173
195
  - test/partial_test.rb
174
196
  - test/row_test.rb
175
- - test/style_set_test.rb
176
197
  - test/style_test.rb
177
- - test/template_set_test.rb
178
198
  - test/template_test.rb
199
+ - test/workbook_element_test.rb
179
200
  - test/workbook_test.rb
180
201
  - test/worksheet_test.rb
181
- - test/xmlss_writer/base_test.rb
182
- - test/xmlss_writer/elements_test.rb
202
+ - test/xmlss_writer/api_test.rb
203
+ - test/xmlss_writer/style_cache_test.rb
204
+ - test/xmlss_writer/style_settings_test.rb
183
205
  - test/xmlss_writer/styles_test.rb
206
+ - test/xmlss_writer_test.rb
184
207
  homepage: http://github.com/kellyredding/osheet
185
208
  licenses: []
186
209
 
@@ -201,12 +224,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
201
224
  required_rubygems_version: !ruby/object:Gem::Requirement
202
225
  none: false
203
226
  requirements:
204
- - - ">="
227
+ - - ">"
205
228
  - !ruby/object:Gem::Version
206
- hash: 3
229
+ hash: 25
207
230
  segments:
208
- - 0
209
- version: "0"
231
+ - 1
232
+ - 3
233
+ - 1
234
+ version: 1.3.1
210
235
  requirements: []
211
236
 
212
237
  rubyforge_project:
@@ -217,6 +242,8 @@ summary: A DSL for specifying and generating spreadsheets using Ruby
217
242
  test_files:
218
243
  - test/cell_test.rb
219
244
  - test/column_test.rb
245
+ - test/fixtures/mixins.rb
246
+ - test/fixtures/test_writer.rb
220
247
  - test/format/accounting_test.rb
221
248
  - test/format/currency_test.rb
222
249
  - test/format/custom_test.rb
@@ -232,17 +259,15 @@ test_files:
232
259
  - test/helper.rb
233
260
  - test/irb.rb
234
261
  - test/mixin_test.rb
235
- - test/mixins.rb
236
- - test/osheet_test.rb
237
- - test/partial_set_test.rb
238
262
  - test/partial_test.rb
239
263
  - test/row_test.rb
240
- - test/style_set_test.rb
241
264
  - test/style_test.rb
242
- - test/template_set_test.rb
243
265
  - test/template_test.rb
266
+ - test/workbook_element_test.rb
244
267
  - test/workbook_test.rb
245
268
  - test/worksheet_test.rb
246
- - test/xmlss_writer/base_test.rb
247
- - test/xmlss_writer/elements_test.rb
269
+ - test/xmlss_writer/api_test.rb
270
+ - test/xmlss_writer/style_cache_test.rb
271
+ - test/xmlss_writer/style_settings_test.rb
248
272
  - test/xmlss_writer/styles_test.rb
273
+ - test/xmlss_writer_test.rb
@@ -1,58 +0,0 @@
1
- module Osheet::Associations
2
-
3
- def self.included(receiver)
4
- receiver.send(:extend, ClassMethods)
5
- end
6
-
7
- module ClassMethods
8
-
9
- # A has many esque association helper
10
- # - will provide a collection reader
11
- # - will define a 'singular' item method for adding to the collection
12
- # - will support adding to the collection both by black and template
13
- def hm(collection)
14
- unless collection.to_s =~ /s$/
15
- raise ArgumentError, "association item names must end in 's'"
16
- end
17
- plural = collection.to_s
18
- singular = plural.to_s.sub(/s$/, '')
19
- klass = Osheet.const_get(singular.capitalize)
20
-
21
- # define collection reader
22
- self.send(:define_method, plural, Proc.new do
23
- set_ivar(plural, []) if get_ivar(plural).nil?
24
- get_ivar(plural)
25
- end)
26
-
27
- # define collection item writer
28
- self.send(:define_method, singular) do |*args, &block|
29
- set_ivar(plural, []) if get_ivar(plural).nil?
30
- push_ivar(plural, if self.respond_to?(:workbook)
31
- # on: worksheet, column, row
32
- # creating: column, row, cell
33
- worksheet = self.respond_to?(:worksheet) ? self.worksheet : self
34
- if self.workbook && (template = self.workbook.templates.get(singular, args.first))
35
- # add by template
36
- klass.new(self.workbook, worksheet, *args[1..-1], &template)
37
- else
38
- # add by block
39
- klass.new(self.workbook, worksheet, &block)
40
- end
41
- else
42
- # on: workbook
43
- # creating: worksheet
44
- if (template = self.templates.get(singular, args.first))
45
- # add by template
46
- klass.new(self, *args[1..-1], &template)
47
- else
48
- # add by block
49
- klass.new(self, &block)
50
- end
51
- end)
52
- end
53
-
54
- end
55
-
56
- end
57
-
58
- end
@@ -1,30 +0,0 @@
1
- module Osheet::Instance
2
-
3
- private
4
-
5
- OSHEET_IVAR_NS = "_osheet_"
6
-
7
- def get_ivar(name)
8
- instance_variable_get(ivar_name(name))
9
- end
10
-
11
- def set_ivar(name, value)
12
- instance_variable_set(ivar_name(name), value)
13
- end
14
-
15
- def push_ivar(name, value)
16
- get_ivar(name) << value
17
- end
18
-
19
- def ivar_name(name)
20
- "@#{OSHEET_IVAR_NS}#{name}"
21
- end
22
-
23
- def set_binding_ivars(binding)
24
- binding.eval('instance_variables').
25
- reject{|ivar| ivar =~ /^@#{OSHEET_IVAR_NS}/}.
26
- each do |ivar|
27
- instance_variable_set(ivar, binding.eval(ivar.to_s))
28
- end
29
- end
30
- end
@@ -1,22 +0,0 @@
1
- module Osheet
2
- module MarkupElement
3
-
4
- # markup elements can add partial markup to themselves
5
- def add(partial_name, *args)
6
- if self.kind_of?(Workbook)
7
- # on: workbook
8
- if (partial = self.partials.get(partial_name))
9
- # add partial
10
- instance_exec(*args, &partial)
11
- end
12
- else
13
- # on: worksheet, column, row
14
- if self.workbook && (partial = self.workbook.partials.get(partial_name))
15
- # add partial
16
- instance_exec(*args, &partial)
17
- end
18
- end
19
- end
20
-
21
- end
22
- end
@@ -1,57 +0,0 @@
1
- require 'osheet/partial'
2
-
3
- module Osheet
4
- class PartialSet < ::Hash
5
-
6
- # this class is a Hash that behaves kinda like a set. I want to
7
- # push partials into the set using the '<<' operator, only allow
8
- # Osheet::Partial objs to be pushed, and then be able to reference
9
- # a particular partial using a key
10
-
11
- def initialize
12
- super
13
- end
14
-
15
- def <<(partial)
16
- if (key = verify(partial))
17
- push(key, partial)
18
- end
19
- end
20
-
21
- # return the named partial
22
- def get(name)
23
- lookup(key(name.to_s))
24
- end
25
-
26
- private
27
-
28
- def lookup(key)
29
- self[key]
30
- end
31
-
32
- # push the partial onto the key
33
- def push(key, partial)
34
- self[key] = partial
35
- end
36
-
37
- # verify the partial, init and return the key
38
- # otherwise ArgumentError it up
39
- def verify(partial)
40
- unless partial.kind_of?(Partial)
41
- raise ArgumentError, 'you can only push Osheet::Partial objs to the partial set'
42
- end
43
- pkey = partial_key(partial)
44
- self[pkey] ||= nil
45
- pkey
46
- end
47
-
48
- def partial_key(partial)
49
- key(partial.name)
50
- end
51
-
52
- def key(name)
53
- name.to_s
54
- end
55
-
56
- end
57
- end
@@ -1,9 +0,0 @@
1
- module Osheet
2
- class Railtie < Rails::Railtie
3
-
4
- initializer "osheet.register" do |app|
5
- ::Osheet.register
6
- end
7
-
8
- end
9
- end
@@ -1,39 +0,0 @@
1
- require 'osheet/style'
2
-
3
- module Osheet
4
- class StyleSet < ::Array
5
-
6
- # this class is an Array has some helper methods. I want to
7
- # push styles into the set using the '<<' operator, only allow
8
- # Osheet::Style objs to be pushed, and then be able to reference
9
- # a particular set of styles using a style class.
10
-
11
- def initialize
12
- super
13
- end
14
-
15
- def <<(value)
16
- super if verify(value)
17
- end
18
-
19
- # return the style set for the style class
20
- def for(style_class)
21
- self.select{|s| s.match?(style_class)}
22
- end
23
-
24
- private
25
-
26
- def styles(class_str)
27
- end
28
-
29
- # verify the style, otherwise ArgumentError it up
30
- def verify(style)
31
- if style.kind_of?(Style)
32
- true
33
- else
34
- raise ArgumentError, 'you can only push Osheet::Style objs to the style set'
35
- end
36
- end
37
-
38
- end
39
- end
@@ -1,51 +0,0 @@
1
- require 'osheet/partial_set'
2
- require 'osheet/template'
3
-
4
- module Osheet
5
- class TemplateSet < PartialSet
6
-
7
- # this class is a PartialSet that keys off of the template element
8
- # and name. Only Osheet::Template objs can be pushed, and you reference
9
- # a particular template using a key of
10
-
11
- def initialize
12
- super
13
- end
14
-
15
- # return the template set for the named element
16
- def get(element, name)
17
- lookup(key(element.to_s, name.to_s))
18
- end
19
-
20
- private
21
-
22
- def lookup(key)
23
- self[key.first][key.last] if self[key.first]
24
- end
25
-
26
- # push the template onto the key
27
- def push(key, template)
28
- self[key.first][key.last] = template
29
- end
30
-
31
- # verify the template, init the key set, and return the key string
32
- # otherwise ArgumentError it up
33
- def verify(template)
34
- unless template.kind_of?(Template)
35
- raise ArgumentError, 'you can only push Osheet::Template objs to the template set'
36
- end
37
- key = template_key(template)
38
- self[key.first] ||= {}
39
- self[key.first][key.last] ||= nil
40
- key
41
- end
42
-
43
- def template_key(template)
44
- key(template.element, template.name)
45
- end
46
-
47
- def key(element, name)
48
- [element.to_s, name.to_s]
49
- end
50
- end
51
- end
@@ -1,44 +0,0 @@
1
- # Rails 2.X Template
2
- if Rails.version =~ /^2/
3
- require 'action_view/base'
4
- require 'action_view/template'
5
-
6
- module ActionView
7
- module TemplateHandlers
8
- class OsheetHandler < TemplateHandler
9
- include Compilable
10
-
11
- def compile(template)
12
- # template.format => 'xls' (or xlsx or whatever they specify)
13
- %{::Osheet::Workbook.new {#{template.source}\n }.to_data}
14
- end
15
-
16
- end
17
- end
18
- end
19
-
20
- ::ActionView::Template.register_template_handler :osheet, ActionView::TemplateHandlers::OsheetHandler
21
- end
22
-
23
- # Rails 3.X Template
24
- if Rails.version =~ /^3/
25
- require 'action_view/base'
26
- require 'action_view/template'
27
-
28
- module ActionView
29
- module Template::Handlers
30
- class OsheetHandler < Template::Handler
31
- include Compilable
32
-
33
- self.default_format = Osheet::MIME_TYPE
34
- def compile(template)
35
- # template.format => 'xls' (or xlsx or whatever they specify)
36
- %{::Osheet::Workbook.new {\n#{template.source}\n }.to_data}
37
- end
38
-
39
- end
40
- end
41
- end
42
-
43
- ::ActionView::Template.register_template_handler :osheet, ActionView::Template::Handlers::OsheetHandler
44
- end
@@ -1,42 +0,0 @@
1
- # TILT/Sinatra template engine
2
- module Osheet
3
- class TiltHandler < Tilt::Template
4
-
5
- def self.engine_initialized?
6
- defined? ::Osheet::Workbook
7
- end
8
-
9
- def initialize_engine
10
- require_template_library 'osheet'
11
- end
12
-
13
- def prepare; end
14
-
15
- def precompiled_preamble(locals)
16
- "::Osheet::Workbook.new {\n#{super}"
17
- end
18
-
19
- def precompiled_template(locals)
20
- data.to_str
21
- end
22
- def precompiled_postamble(locals)
23
- "}.to_data"
24
- end
25
-
26
- end
27
- end
28
-
29
- Tilt.register 'osheet', Osheet::TiltHandler
30
-
31
- if defined?(::Sinatra::Base)
32
- class ::Sinatra::Base
33
-
34
- # use this helper method to render Osheet views in Sinatra
35
- # => view files should be named: "#{template}.osheet"
36
- def osheet(template, options={}, locals={})
37
- options.merge! :layout => false, :default_content_type => ::Osheet::MIME_TYPE
38
- render :osheet, template, options, locals
39
- end
40
-
41
- end
42
- end
@@ -1,2 +0,0 @@
1
- require 'osheet/view_handler/tilt' if defined?(Tilt)
2
- require 'osheet/view_handler/rails' if defined?(Rails)
@@ -1,17 +0,0 @@
1
- module Osheet::WorksheetElement
2
-
3
- def worksheet
4
- get_ivar(:worksheet)
5
- end
6
-
7
- [:columns, :rows].each do |meth|
8
- define_method(meth) do
9
- if worksheet && worksheet.respond_to?(meth)
10
- worksheet.send(meth)
11
- else
12
- nil
13
- end
14
- end
15
- end
16
-
17
- end
@@ -1,49 +0,0 @@
1
- require 'fileutils'
2
- module Osheet::XmlssWriter; end
3
- require 'xmlss'
4
- require 'osheet/xmlss_writer/elements'
5
- require 'osheet/xmlss_writer/styles'
6
-
7
- module Osheet::XmlssWriter
8
- class Base
9
- include Elements
10
- include Styles
11
-
12
- attr_reader :used_xstyles
13
-
14
- def initialize(opts={})
15
- @used_xstyles = []
16
- self.oworkbook = if opts.has_key?(:workbook)
17
- opts[:workbook]
18
- else
19
- ::Osheet::Workbook.new
20
- end
21
- end
22
-
23
- def to_data(xmlss_output_opts={})
24
- self.xworkbook(xmlss_output_opts).to_s
25
- end
26
-
27
- def to_file(file_path, xmlss_output_opts={})
28
- self.xworkbook(xmlss_output_opts).to_file(file_path)
29
- end
30
-
31
-
32
-
33
-
34
- def oworkbook=(value)
35
- unless value.kind_of?(::Osheet::Workbook)
36
- raise ArgumentError, "'#{value.inspect}' is not an Osheet::Workbook"
37
- end
38
- @oworkbook = value
39
- end
40
-
41
- def xworkbook(xmlss_output_opts={})
42
- @used_xstyles = []
43
- ::Xmlss::Workbook.new(:output => xmlss_output_opts).tap do |xwkbk|
44
- @oworkbook.worksheets.each { |sheet| worksheet(xwkbk, sheet) }
45
- end
46
- end
47
-
48
- end
49
- end