lib/osheet/xmlss_writer/base.rb in osheet-0.9.2 vs lib/osheet/xmlss_writer/base.rb in osheet-0.10.0

- old
+ new

@@ -7,46 +7,43 @@ module Osheet::XmlssWriter class Base include Elements include Styles - attr_reader :workbook, :styles + attr_reader :used_xstyles def initialize(opts={}) - @styles = [] - @ostyles = ::Osheet::StyleSet.new - self.workbook = opts[:workbook] if opts.has_key?(:workbook) + @used_xstyles = [] + self.oworkbook = if opts.has_key?(:workbook) + opts[:workbook] + else + ::Osheet::Workbook.new + end end - def workbook=(oworkbook) - unless oworkbook.kind_of?(::Osheet::Workbook) - raise ArgumentError, "'#{oworkbook.inspect}' is not an Osheet::Workbook" - end - # if oworkbook && oworkbook.worksheets.collect{|ws| ws.name}.include?(name_value) - # # puts "ERRORR!!!!!!!!!!!!!!" - # # puts "names: #{names.inspect}" - # # puts "name value: #{name_value}" - # raise ArgumentError, "the sheet name '#{name_value}' is already in use. enter a sheet name that is not used by another sheet" - # end - # # puts "names: #{names.inspect}" - # # puts "name value: #{name_value}" - # # name_value + def to_data(xmlss_output_opts={}) + self.xworkbook(xmlss_output_opts).to_s + end - @ostyles = oworkbook.styles - @workbook = ::Xmlss::Workbook.new({ - :worksheets => worksheets(oworkbook.worksheets) - }) + def to_file(file_path, xmlss_output_opts={}) + self.xworkbook(xmlss_output_opts).to_file(file_path) end - def to_data(*options) - @workbook.styles = @styles - @workbook.to_xml(*options) + + + + def oworkbook=(value) + unless value.kind_of?(::Osheet::Workbook) + raise ArgumentError, "'#{value.inspect}' is not an Osheet::Workbook" + end + @oworkbook = value end - def to_file(path, *options) - FileUtils.mkdir_p(File.dirname(path)) - File.open(path, 'w') {|f| f.write self.to_data(*options)} - File.exists?(path) ? path : false + def xworkbook(xmlss_output_opts={}) + @used_xstyles = [] + ::Xmlss::Workbook.new(:output => xmlss_output_opts).tap do |xwkbk| + @oworkbook.worksheets.each { |sheet| worksheet(xwkbk, sheet) } + end end end -end \ No newline at end of file +end