diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-09-06 11:09:27 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-09-06 11:09:27 +0100 |
| commit | d4a14afabc917a06cd3ac67ccb03c69bf0299821 (patch) | |
| tree | 3c3af86f20e4ef3b933a0a5e3218dd0bcb2d8a0d /lib | |
| parent | a274a2f176303bfec529edecb8cc1773daf8ae31 (diff) | |
Add fallback content types
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/docx/content-types-reader.js | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/lib/docx/content-types-reader.js b/lib/docx/content-types-reader.js index a5f7ec0..fc95771 100644 --- a/lib/docx/content-types-reader.js +++ b/lib/docx/content-types-reader.js @@ -1,10 +1,17 @@ exports.readContentTypesFromXml = readContentTypesFromXml; -exports.defaultContentTypes = { - findContentType: function(path) { - return null; - } + +var fallbackContentTypes = { + "png": "png", + "gif": "gif", + "jpeg": "jpeg", + "jpg": "jpeg", + "tif": "tiff", + "tiff": "tiff", + "bmp": "bmp" }; +exports.defaultContentTypes = contentTypes({}, {}); + function readContentTypesFromXml(xml) { var extensionDefaults = {}; @@ -22,7 +29,10 @@ function readContentTypesFromXml(xml) { overrides[name] = child.attributes.ContentType; } }); - + return contentTypes(overrides, extensionDefaults); +} + +function contentTypes(overrides, extensionDefaults) { return { findContentType: function(path) { var overrideContentType = overrides[path]; @@ -31,8 +41,18 @@ function readContentTypesFromXml(xml) { } else { var pathParts = path.split("."); var extension = pathParts[pathParts.length - 1]; - return extensionDefaults[extension]; + if (extensionDefaults.hasOwnProperty(extension)) { + return extensionDefaults[extension]; + } else { + var fallback = fallbackContentTypes[extension]; + if (fallback) { + return "image/" + fallback; + } else { + return null; + } + } } } }; + } |
