class OpenXml::Parts::ContentTypes

Constants

REQUIRED_DEFAULTS

Attributes

defaults[R]
overrides[R]

Public Class Methods

new(defaults={}, overrides={}) click to toggle source
# File lib/open_xml/parts/content_types.rb, line 23
def initialize(defaults={}, overrides={})
  @defaults = REQUIRED_DEFAULTS.merge(defaults)
  @overrides = overrides
end
parse(xml) click to toggle source
# File lib/open_xml/parts/content_types.rb, line 11
def self.parse(xml)
  document = Nokogiri(xml)
  self.new.tap do |part|
    document.css("Default").each do |default|
      part.add_default default["Extension"], default["ContentType"]
    end
    document.css("Override").each do |default|
      part.add_override default["PartName"], default["ContentType"]
    end
  end
end

Public Instance Methods

add_default(extension, content_type) click to toggle source
# File lib/open_xml/parts/content_types.rb, line 28
def add_default(extension, content_type)
  defaults[extension] = content_type
end
add_override(part_name, content_type) click to toggle source
# File lib/open_xml/parts/content_types.rb, line 32
def add_override(part_name, content_type)
  overrides[part_name] = content_type
end
of(path) click to toggle source
# File lib/open_xml/parts/content_types.rb, line 36
def of(path)
  overrides.fetch(path, defaults[File.extname(path)[1..-1]])
end
to_xml() click to toggle source
# File lib/open_xml/parts/content_types.rb, line 40
def to_xml
  build_xml do |xml|
    xml.Types(xmlns: "http://schemas.openxmlformats.org/package/2006/content-types") {
      defaults.each { |extension, content_type| xml.Default("Extension" => extension, "ContentType" => content_type) }
      overrides.each { |part_name, content_type| xml.Override("PartName" => part_name, "ContentType" => content_type) }
    }
  end
end