diff options
| author | Michael Williamson <mike@zwobble.org> | 2013-04-27 23:05:19 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2013-04-27 23:05:19 +0100 |
| commit | c73f4f17b9d02e952110ee8d9849b6e2293569d7 (patch) | |
| tree | db318b502eedad34711e67a870cd2b10dbdafcbb /lib | |
| parent | 43db35ec5e5125055fa8ccfdef17d077a63f31f9 (diff) | |
Read overrides from [Content_Types].xml
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]; + } } } } |
