From c73f4f17b9d02e952110ee8d9849b6e2293569d7 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 27 Apr 2013 23:05:19 +0100 Subject: Read overrides from [Content_Types].xml --- lib/content-types-reader.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'lib/content-types-reader.js') diff --git a/lib/content-types-reader.js b/lib/content-types-reader.js index 0346b8c..0a74eb9 100644 --- a/lib/content-types-reader.js +++ b/lib/content-types-reader.js @@ -13,18 +13,31 @@ function readContentTypesFromZipFile(file) { function readContentTypesFromXml(xml) { var extensionDefaults = {}; + var overrides = {}; xml.root.children.forEach(function(child) { if (child.name === "content-types:Default") { extensionDefaults[child.attributes.Extension] = child.attributes.ContentType; } + if (child.name === "content-types:Override") { + var name = child.attributes.PartName; + if (name.charAt(0) === "/") { + name = name.substring(1); + } + overrides[name] = child.attributes.ContentType; + } }); return { findContentType: function(path) { - var pathParts = path.split("."); - var extension = pathParts[pathParts.length - 1]; - return extensionDefaults[extension]; + var overrideContentType = overrides[path]; + if (overrideContentType) { + return overrideContentType; + } else { + var pathParts = path.split("."); + var extension = pathParts[pathParts.length - 1]; + return extensionDefaults[extension]; + } } } } -- cgit v1.2.3