lib/axlsx/package.rb in axlsx-2.1.0.pre vs lib/axlsx/package.rb in axlsx-3.0.0.pre

- old
+ new

@@ -1,6 +1,6 @@ -# encoding: UTF-8 +# encoding: utf-8 module Axlsx # Package is responsible for managing all the bits and peices that Open Office XML requires to make a valid # xlsx document including valdation and serialization. class Package include Axlsx::OptionsParser @@ -145,15 +145,11 @@ # p.validate.each { |error| puts error.message } def validate errors = [] parts.each do |part| unless part[:schema].nil? - if part[:doc].is_a? String - errors.concat validate_single_doc(part[:schema], part[:doc]) - else - errors.concat validate_single_doc(part[:schema], part[:doc].to_xml_string) - end + errors.concat validate_single_doc(part[:schema], part[:doc].to_xml_string) end end errors end @@ -163,24 +159,17 @@ # @param [Zip::OutputStream] zip # @return [Zip::OutputStream] def write_parts(zip) p = parts p.each do |part| - #next unless part[:entry] == CORE_PN unless part[:doc].nil? zip.put_next_entry(zip_entry_for_part(part)) - if part[:doc].is_a? String - entry = ['1.9.2', '1.9.3'].include?(RUBY_VERSION) ? part[:doc].force_encoding('BINARY') : part[:doc] - zip.puts(entry) - else - part[:doc].to_xml_string(zip) - end + part[:doc].to_xml_string(zip) end unless part[:path].nil? zip.put_next_entry(zip_entry_for_part(part)) - # binread for 1.9.3 - zip.write IO.respond_to?(:binread) ? IO.binread(part[:path]) : IO.read(part[:path]) + zip.write IO.read(part[:path]) end end zip end @@ -251,10 +240,12 @@ workbook.worksheets.each do |sheet| parts << {:entry => "xl/#{sheet.rels_pn}", :doc => sheet.relationships, :schema => RELS_XSD} parts << {:entry => "xl/#{sheet.pn}", :doc => sheet, :schema => SML_XSD} end - parts + + # Sort parts for correct MIME detection + parts.sort_by { |part| part[:entry] } end # Performs xsd validation for a signle document # # @param [String] schema path to the xsd schema to be used in validation.