summaryrefslogtreecommitdiffstats
path: root/lib/book.js
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2015-11-16 10:06:31 +0100
committerSamy Pessé <samypesse@gmail.com>2015-11-16 10:06:31 +0100
commit9b7a90afef5a19c97c45339a3ccc4ebc3db36397 (patch)
tree602e023a3ff5c660b8f4bc9bc942062443c9c011 /lib/book.js
parent2ae83b32472bb4eab339a971ff06c63f02117c59 (diff)
downloadgitbook-9b7a90afef5a19c97c45339a3ccc4ebc3db36397.zip
gitbook-9b7a90afef5a19c97c45339a3ccc4ebc3db36397.tar.gz
gitbook-9b7a90afef5a19c97c45339a3ccc4ebc3db36397.tar.bz2
Test first extension of structure itself in book.findFile
Diffstat (limited to 'lib/book.js')
-rw-r--r--lib/book.js35
1 files changed, 21 insertions, 14 deletions
diff --git a/lib/book.js b/lib/book.js
index 39d4719..cb00ab1 100644
--- a/lib/book.js
+++ b/lib/book.js
@@ -356,10 +356,10 @@ Book.prototype.parsePlugins = function() {
// Parse readme to extract defaults title and description
Book.prototype.parseReadme = function() {
var that = this;
- var structure = that.config.getStructure('readme');
- that.log.debug.ln('start parsing readme:', structure);
+ var filename = that.config.getStructure('readme', true);
+ that.log.debug.ln('start parsing readme:', filename);
- return that.findFile(structure)
+ return that.findFile(filename)
.then(function(readme) {
if (!readme) throw 'No README file';
if (!_.contains(that.files, readme.path)) throw 'README file is ignored';
@@ -390,10 +390,10 @@ Book.prototype.parseReadme = function() {
Book.prototype.parseLangs = function() {
var that = this;
- var structure = that.config.getStructure('langs');
- that.log.debug.ln('start parsing languages index:', structure);
+ var filename = that.config.getStructure('langs', true);
+ that.log.debug.ln('start parsing languages index:', filename);
- return that.findFile(structure)
+ return that.findFile(filename)
.then(function(langs) {
if (!langs) return [];
@@ -421,10 +421,10 @@ Book.prototype.parseLangs = function() {
Book.prototype.parseSummary = function() {
var that = this;
- var structure = that.config.getStructure('summary');
- that.log.debug.ln('start parsing summary:', structure);
+ var filename = that.config.getStructure('summary', true);
+ that.log.debug.ln('start parsing summary:', filename);
- return that.findFile(structure)
+ return that.findFile(filename)
.then(function(summary) {
if (!summary) throw 'No SUMMARY file';
@@ -459,10 +459,10 @@ Book.prototype.parseSummary = function() {
Book.prototype.parseGlossary = function() {
var that = this;
- var structure = that.config.getStructure('glossary');
- that.log.debug.ln('start parsing glossary: ', structure);
+ var filename = that.config.getStructure('glossary', true);
+ that.log.debug.ln('start parsing glossary: ', filename);
- return that.findFile(structure)
+ return that.findFile(filename)
.then(function(glossary) {
if (!glossary) return [];
@@ -600,12 +600,19 @@ Book.prototype.parsePage = function(filename, options) {
Book.prototype.findFile = function(filename) {
var that = this;
- return _.reduce(parsers.extensions, function(prev, ext) {
+ var ext = path.extname(filename);
+ var basename = path.basename(filename, ext);
+
+ // Ordered list of extensions to test
+ var exts = parsers.extensions;
+ if (ext) exts = _.uniq([ext].concat(exts));
+
+ return _.reduce(exts, function(prev, ext) {
return prev.then(function(output) {
// Stop if already find a parser
if (output) return output;
- var filepath = filename+ext;
+ var filepath = basename+ext;
return that.fileExists(filepath)
.then(function(exists) {