aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-09-06 11:09:27 +0100
committerMichael Williamson <mike@zwobble.org>2015-09-06 11:09:27 +0100
commitd4a14afabc917a06cd3ac67ccb03c69bf0299821 (patch)
tree3c3af86f20e4ef3b933a0a5e3218dd0bcb2d8a0d /lib
parenta274a2f176303bfec529edecb8cc1773daf8ae31 (diff)
Add fallback content types
Diffstat (limited to 'lib')
-rw-r--r--lib/docx/content-types-reader.js32
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;
+ }
+ }
}
}
};
+
}