diff options
Diffstat (limited to 'lib/book.js')
-rw-r--r-- | lib/book.js | 41 |
1 files changed, 31 insertions, 10 deletions
diff --git a/lib/book.js b/lib/book.js index 2f4aa7c..8b0d22b 100644 --- a/lib/book.js +++ b/lib/book.js @@ -377,7 +377,13 @@ Book.prototype.parseReadme = function() { that.log.debug.ln("readme located at", that.readmeFile); return that.template.renderFile(that.readmeFile) .then(function(content) { - return readme.parser.readme(content); + return readme.parser.readme(content) + .fail(function(err) { + throw that.normError(err, { + name: err.name || "Readme Parse Error", + fileName: that.readmeFile + }); + }); }); }) .then(function(readme) { @@ -404,7 +410,13 @@ Book.prototype.parseLangs = function() { that.log.debug.ln("languages index located at", that.langsFile); return that.template.renderFile(that.langsFile) .then(function(content) { - return langs.parser.langs(content); + return langs.parser.langs(content) + .fail(function(err) { + throw that.normError(err, { + name: err.name || "Langs Parse Error", + fileName: that.langsFile + }); + }); }); }) .then(function(langs) { @@ -435,6 +447,12 @@ Book.prototype.parseSummary = function() { entryPoint: that.readmeFile, entryPointTitle: that.i18n('SUMMARY_INTRODUCTION'), files: that.files + }) + .fail(function(err) { + throw that.normError(err, { + name: err.name || "Summary Parse Error", + fileName: that.summaryFile + }); }); }); }) @@ -463,7 +481,13 @@ Book.prototype.parseGlossary = function() { that.log.debug.ln("glossary located at", that.glossaryFile); return that.template.renderFile(that.glossaryFile) .then(function(content) { - return glossary.parser.glossary(content); + return glossary.parser.glossary(content) + .fail(function(err) { + throw that.normError(err, { + name: err.name || "Glossary Parse Error", + fileName: that.glossaryFile + }); + }); }); }) .then(function(glossary) { @@ -742,15 +766,12 @@ Book.prototype.i18n = function(phrase) { }; // Normalize error -Book.prototype.normError = function(err, opts) { - opts = _.defaults(opts || {}, { - - }); - +Book.prototype.normError = function(err, opts, defs) { if (_.isString(err)) err = new Error(err); // Extend err - _.extend(err, opts); + _.extend(err, opts || {}); + _.defaults(err, defs || {}); err.lineNumber = err.lineNumber || err.lineno; err.columnNumber = err.columnNumber || err.colno; @@ -762,7 +783,7 @@ Book.prototype.normError = function(err, opts) { if (this.lineNumber) attributes.push("Line "+this.lineNumber); if (this.columnNumber) attributes.push("Column "+this.columnNumber); return (this.name || "Error")+": "+this.message+((attributes.length > 0)? " ("+attributes.join(", ")+")" : "") - } + }; return err; }; |