diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/content-types-reader.js | 19 |
1 files changed, 16 insertions, 3 deletions
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]; + } } } } |
