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.