1
0
Fork 0
mirror of https://github.com/futurepress/epub.js.git synced 2025-10-03 14:59:18 +02:00

Handle not replacing missing files in epub (#529)

* Handle not replacing missing files in epub

* fix gitignore
This commit is contained in:
Fred Chasen 2017-01-12 14:51:38 -05:00 committed by GitHub
parent ad9dd35fb5
commit eeb566c6f8
2 changed files with 23 additions and 4 deletions

View file

@ -1,6 +1,6 @@
{ {
"name": "epubjs", "name": "epubjs",
"version": "0.3.7", "version": "0.3.8",
"description": "Parse and Render Epubs", "description": "Parse and Render Epubs",
"main": "lib/index.js", "main": "lib/index.js",
"jsnext:main": "src/index.js", "jsnext:main": "src/index.js",

View file

@ -103,12 +103,17 @@ class Resources {
map( (url) => { map( (url) => {
var absolute = resolver(url); var absolute = resolver(url);
return archive.createUrl(absolute, {"base64": (this.settings.replacements === "base64")}); return archive.createUrl(absolute, {"base64": (this.settings.replacements === "base64")}).
catch((err) => {
return null;
});
}); });
return Promise.all(replacements) return Promise.all(replacements)
.then( (replacementUrls) => { .then( (replacementUrls) => {
this.replacementUrls = replacementUrls; this.replacementUrls = replacementUrls.filter((url) => {
return (typeof(url) === "string");
});
return replacementUrls; return replacementUrls;
}); });
} }
@ -132,7 +137,8 @@ class Resources {
if (indexInUrls > -1) { if (indexInUrls > -1) {
this.replacementUrls[indexInUrls] = replacementUrl; this.replacementUrls[indexInUrls] = replacementUrl;
} }
}.bind(this)); }.bind(this))
replaced.push(replacement); replaced.push(replacement);
}.bind(this)); }.bind(this));
@ -162,6 +168,7 @@ class Resources {
// Get the text of the css file from the archive // Get the text of the css file from the archive
var textResponse = archive.getText(absolute); var textResponse = archive.getText(absolute);
// Get asset links relative to css file // Get asset links relative to css file
var relUrls = this.urls.map( (assetHref) => { var relUrls = this.urls.map( (assetHref) => {
var resolved = resolver(assetHref); var resolved = resolver(assetHref);
@ -170,6 +177,13 @@ class Resources {
return relative; return relative;
}); });
if (!textResponse) {
// file not found, don't replace
return new Promise(function(resolve){
resolve();
});
}
return textResponse.then( (text) => { return textResponse.then( (text) => {
// Replacements in the css text // Replacements in the css text
text = substitute(text, relUrls, this.replacementUrls); text = substitute(text, relUrls, this.replacementUrls);
@ -182,6 +196,11 @@ class Resources {
} }
return newUrl; return newUrl;
}, (err) => {
// handle response errors
return new Promise(function(resolve){
resolve();
});
}); });
} }