summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/book.js103
-rw-r--r--lib/index.js41
2 files changed, 68 insertions, 76 deletions
diff --git a/lib/book.js b/lib/book.js
index 08dd6dc..a7d0cd5 100644
--- a/lib/book.js
+++ b/lib/book.js
@@ -1,31 +1,25 @@
var Q = require("q");
var _ = require("lodash");
var path = require("path");
-var util = require("util");
var lunr = require("lunr");
var parsers = require("gitbook-parsers");
-var color = require("bash-color");
var fs = require("./utils/fs");
var parseNavigation = require("./utils/navigation");
var parseProgress = require("./utils/progress");
var pageUtil = require("./utils/page");
var pathUtil = require("./utils/path");
-var batch = require("./utils/batch");
var links = require("./utils/links");
var i18n = require("./utils/i18n");
var logger = require("./utils/logger");
var Configuration = require("./configuration");
var TemplateEngine = require("./template");
-var Plugin = require("./plugin");
var PluginsList = require("./pluginslist");
var generators = require("./generators");
var Book = function(root, context, parent) {
- var that = this;
-
this.context = _.defaults(context || {}, {
// Extend book configuration
config: {},
@@ -86,10 +80,10 @@ var Book = function(root, context, parent) {
// Search Index
this.searchIndex = lunr(function () {
- this.ref('url');
+ this.ref("url");
- this.field('title', { boost: 10 });
- this.field('body');
+ this.field("title", { boost: 10 });
+ this.field("body");
});
// Bind methods
@@ -125,12 +119,12 @@ Book.prototype.parse = function() {
path.join(that.root, lang.path),
_.merge({}, that.context, {
config: _.extend({}, that.options, {
- 'output': path.join(that.options.output, lang.lang),
- 'language': lang.lang
+ "output": path.join(that.options.output, lang.lang),
+ "language": lang.lang
})
}),
that
- )
+ );
});
});
})
@@ -187,7 +181,7 @@ Book.prototype.generate = function(generator) {
// Create generator
.then(function() {
var Generator = generators[generator];
- if (!Generator) throw "Generator '"+that.options.generator+"' doesn't exist";
+ if (!Generator) throw "Generator \""+that.options.generator+"\" doesn't exist";
generator = new Generator(that);
return generator.prepare();
@@ -212,9 +206,9 @@ Book.prototype.generate = function(generator) {
return Q()
- // First, let's create folder
+ // First, let"s create folder
.then(function() {
- return _.reduce(ops["directories"] || [], function(prev, folder) {
+ return _.reduce(ops.directories || [], function(prev, folder) {
return prev.then(function() {
that.log.debug.ln("transferring folder", folder);
return Q(generator.transferFolder(folder));
@@ -222,18 +216,18 @@ Book.prototype.generate = function(generator) {
}, Q());
})
- // Then, let's copy other files
+ // Then, let"s copy other files
.then(function() {
- return Q.all(_.map(ops["files"] || [], function(file) {
+ return Q.all(_.map(ops.files || [], function(file) {
that.log.debug.ln("transferring file", file);
return Q(generator.transferFile(file));
}));
})
- // Finally let's generate content
+ // Finally let"s generate content
.then(function() {
- var nFiles = (ops["content"] || []).length;
- return _.reduce(ops["content"] || [], function(prev, file, i) {
+ var nFiles = (ops.content || []).length;
+ return _.reduce(ops.content || [], function(prev, file, i) {
return prev.then(function() {
var p = ((i*100)/nFiles).toFixed(0)+"%";
that.log.debug.ln("processing", file, p);
@@ -267,7 +261,7 @@ Book.prototype.generate = function(generator) {
};
// Generate the output for a multilingual book
-Book.prototype.generateMultiLingual = function(generator) {
+Book.prototype.generateMultiLingual = function() {
var that = this;
return Q()
@@ -295,7 +289,7 @@ Book.prototype.generateFile = function(output, options) {
book.setOutput(tmpDir);
return book.generate(options.ebookFormat)
- .then(function(_options) {
+ .then(function() {
var copyFile = function(lang) {
var _outputFile = output;
var _tmpDir = tmpDir;
@@ -339,7 +333,7 @@ Book.prototype.generateFile = function(output, options) {
Book.prototype.parseConfig = function() {
var that = this;
- that.log.info("loading book configuration....")
+ that.log.info("loading book configuration....");
return that.config.load()
.then(function() {
that.log.info.ok();
@@ -349,12 +343,11 @@ Book.prototype.parseConfig = function() {
// Parse list of plugins
Book.prototype.parsePlugins = function() {
var that = this;
- var failed = [];
// Load plugins
return that.plugins.load(that.options.plugins)
.then(function() {
- if (_.size(that.plugins.failed) > 0) return Q.reject(new Error("Error loading plugins: "+that.plugins.failed.join(",")+". Run 'gitbook install' to install plugins from NPM."));
+ if (_.size(that.plugins.failed) > 0) return Q.reject(new Error("Error loading plugins: "+that.plugins.failed.join(",")+". Run \"gitbook install\" to install plugins from NPM."));
that.log.info.ok(that.plugins.count()+" plugins loaded");
that.log.debug.ln("normalize plugins list");
@@ -446,7 +439,7 @@ Book.prototype.parseSummary = function() {
.then(function(content) {
return summary.parser.summary(content, {
entryPoint: that.readmeFile,
- entryPointTitle: that.i18n('SUMMARY_INTRODUCTION'),
+ entryPointTitle: that.i18n("SUMMARY_INTRODUCTION"),
files: that.files
})
.fail(function(err) {
@@ -575,7 +568,7 @@ Book.prototype.parsePage = function(filename, options) {
.then(function(content) {
section.content = content;
return _sections.concat([section]);
- })
+ });
});
}, Q([]));
})
@@ -587,8 +580,8 @@ Book.prototype.parsePage = function(filename, options) {
convertImages: options.convertImages,
input: filename,
navigation: that.navigation,
- base: path.dirname(filename) || './',
- output: path.dirname(filename) || './',
+ base: path.dirname(filename) || "./",
+ output: path.dirname(filename) || "./",
glossary: that.glossary
});
})
@@ -623,7 +616,7 @@ Book.prototype.findFile = function(filename) {
parser: parsers.get(ext),
path: filepath
};
- })
+ });
});
}, Q(null));
};
@@ -658,28 +651,28 @@ Book.prototype.listAllFiles = function() {
var that = this;
return fs.list(this.root, {
- ignoreFiles: ['.ignore', '.gitignore', '.bookignore'],
+ ignoreFiles: [".ignore", ".gitignore", ".bookignore"],
ignoreRules: [
// Skip Git stuff
- '.git/',
- '.gitignore',
+ ".git/",
+ ".gitignore",
// Skip OS X meta data
- '.DS_Store',
+ ".DS_Store",
// Skip stuff installed by plugins
- 'node_modules',
+ "node_modules",
// Skip book outputs
- '_book',
- '*.pdf',
- '*.epub',
- '*.mobi',
+ "_book",
+ "*.pdf",
+ "*.epub",
+ "*.mobi",
// Skip config files
- '.ignore',
- '.bookignore',
- 'book.json',
+ ".ignore",
+ ".bookignore",
+ "book.json",
]
})
.then(function(_files) {
@@ -688,7 +681,7 @@ Book.prototype.listAllFiles = function() {
};
// Return true if the book is a multilingual book
-Book.prototype.isMultilingual = function(filename) {
+Book.prototype.isMultilingual = function() {
return this.books.length > 0;
};
@@ -698,7 +691,7 @@ Book.prototype.parentRoot = function() {
return this.root;
};
-// Return true if it's a sub-book
+// Return true if it"s a sub-book
Book.prototype.isSubBook = function() {
return !!this.parent;
};
@@ -727,20 +720,20 @@ Book.prototype.relative = function(p) {
// Normalize a path to .html and convert README -> index
Book.prototype.contentPath = function(link) {
if (
- path.basename(link, path.extname(link)) == "README"
- || link == this.readmeFile
+ path.basename(link, path.extname(link)) == "README" ||
+ link == this.readmeFile
) {
link = path.join(path.dirname(link), "index"+path.extname(link));
}
link = links.changeExtension(link, ".html");
return link;
-}
+};
// Normalize a link to .html and convert README -> index
Book.prototype.contentLink = function(link) {
return links.normalize(this.contentPath(link));
-}
+};
// Index a page into the search index
Book.prototype.indexPage = function(page) {
@@ -764,7 +757,7 @@ Book.prototype._defaultsStructure = function(filename) {
that.summaryFile = that.summaryFile || that.config.getStructure("summary")+extension;
that.glossaryFile = that.glossaryFile || that.config.getStructure("glossary")+extension;
that.langsFile = that.langsFile || that.config.getStructure("langs")+extension;
-}
+};
// Change output path
Book.prototype.setOutput = function(p) {
@@ -777,7 +770,7 @@ Book.prototype.setOutput = function(p) {
};
// Translate a strign according to the book language
-Book.prototype.i18n = function(phrase) {
+Book.prototype.i18n = function() {
var args = Array.prototype.slice.call(arguments);
return i18n.__.apply({}, [this.config.normalizeLanguage()].concat(args));
};
@@ -796,10 +789,10 @@ Book.prototype.normError = function(err, opts, defs) {
err.toString = function() {
var attributes = [];
- if (this.fileName) attributes.push("In file '"+this.fileName+"'");
+ if (this.fileName) attributes.push("In file \""+this.fileName+"\"");
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 (this.name || "Error")+": "+this.message+((attributes.length > 0)? " ("+attributes.join(", ")+")" : "");
};
return err;
@@ -837,7 +830,7 @@ Book.init = function(root, opts) {
var chapters = book.summary.chapters || [];
extensionToUse = path.extname(summary);
- if (chapters.length == 0) {
+ if (chapters.length === 0) {
chapters = [
{
title: "Summary",
@@ -853,7 +846,7 @@ Book.init = function(root, opts) {
return Q(chaptersPaths(chapters));
})
.then(function(chapters) {
- // Create files that don't exist
+ // Create files that don"t exist
return Q.all(_.map(chapters, function(chapter) {
if (!chapter.path) return Q();
var absolutePath = path.resolve(book.root, chapter.path);
@@ -869,7 +862,7 @@ Book.init = function(root, opts) {
return fs.mkdirp(path.dirname(absolutePath))
.then(function() {
- return fs.writeFile(absolutePath, '# '+chapter.title+'\n');
+ return fs.writeFile(absolutePath, "# "+chapter.title+"\n");
});
});
}));
diff --git a/lib/index.js b/lib/index.js
index b5aa06d..89d5d3c 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -1,11 +1,10 @@
var Q = require("q");
var _ = require("lodash");
var path = require("path");
-var tinylr = require('tiny-lr');
-var color = require('bash-color');
+var tinylr = require("tiny-lr");
+var color = require("bash-color");
var Book = require("./book");
-var Plugin = require("./plugin");
var Server = require("./utils/server");
var stringUtils = require("./utils/string");
var watch = require("./utils/watch");
@@ -42,10 +41,10 @@ module.exports = {
var output = args[1] || path.join(input, "_book");
var book = new Book(input, _.extend({}, {
- 'config': {
- 'output': output
+ "config": {
+ "output": output
},
- 'logLevel': kwargs.log
+ "logLevel": kwargs.log
}));
return book.parse()
@@ -71,7 +70,7 @@ module.exports = {
var output = args[1];
var book = new Book(input, _.extend({}, {
- 'logLevel': kwargs.log
+ "logLevel": kwargs.log
}));
return book.parse()
@@ -116,7 +115,7 @@ module.exports = {
// Init livereload server
var lrServer = tinylr({});
- var lrPath = undefined;
+ var lrPath;
var generate = function() {
if (server.isRunning()) console.log("Stopping server");
@@ -124,10 +123,10 @@ module.exports = {
return server.stop()
.then(function() {
var book = new Book(input, _.extend({}, {
- 'config': {
- 'defaultsPlugins': ["livereload"]
+ "config": {
+ "defaultsPlugins": ["livereload"]
},
- 'logLevel': kwargs.log
+ "logLevel": kwargs.log
}));
return book.parse()
@@ -138,10 +137,10 @@ module.exports = {
})
.then(function(book) {
console.log();
- console.log('Starting server ...');
+ console.log("Starting server ...");
return server.start(book.options.output, kwargs.port)
.then(function() {
- console.log('Serving book on http://localhost:'+kwargs.port);
+ console.log("Serving book on http://localhost:"+kwargs.port);
if (lrPath) {
// trigger livereload
@@ -159,18 +158,18 @@ module.exports = {
// set livereload path
lrPath = filepath;
console.log("Restart after change in file", filepath);
- console.log('');
+ console.log("");
return generate();
- })
- })
+ });
+ });
});
};
return Q.nfcall(lrServer.listen.bind(lrServer), kwargs.lrport)
.then(function() {
- console.log('Live reload server started on port:', kwargs.lrport);
- console.log('Press CTRL+C to quit ...');
- console.log('')
+ console.log("Live reload server started on port:", kwargs.lrport);
+ console.log("Press CTRL+C to quit ...");
+ console.log("");
return generate();
});
}
@@ -179,7 +178,7 @@ module.exports = {
{
name: "install [book]",
description: "install plugins dependencies",
- exec: function(args, kwargs) {
+ exec: function(args) {
var input = args[0] || process.cwd();
var book = new Book(input);
@@ -198,7 +197,7 @@ module.exports = {
{
name: "init [directory]",
description: "create files and folders based on contents of SUMMARY.md",
- exec: function(args, kwargs) {
+ exec: function(args) {
return Book.init(args[0] || process.cwd())
.then(function(){
console.log("");