diff options
author | Samy Pessé <samypesse@gmail.com> | 2014-04-04 09:45:04 -0700 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2014-04-04 09:45:04 -0700 |
commit | 9dce855113b9217201cbf1cac851da44d3238fd4 (patch) | |
tree | 9e18cfd63d12917c6fe6a393398616a19cf26a13 /lib | |
parent | 57e2595a3ea65de63822d105010b2f75cd50636c (diff) | |
download | gitbook-9dce855113b9217201cbf1cac851da44d3238fd4.zip gitbook-9dce855113b9217201cbf1cac851da44d3238fd4.tar.gz gitbook-9dce855113b9217201cbf1cac851da44d3238fd4.tar.bz2 |
Add class BaseGenerator
Diffstat (limited to 'lib')
-rw-r--r-- | lib/generate/generator.js | 32 | ||||
-rw-r--r-- | lib/generate/generator_site.js | 32 | ||||
-rw-r--r-- | lib/generate/index.js | 67 |
3 files changed, 84 insertions, 47 deletions
diff --git a/lib/generate/generator.js b/lib/generate/generator.js new file mode 100644 index 0000000..fcd0ad6 --- /dev/null +++ b/lib/generate/generator.js @@ -0,0 +1,32 @@ +var Q = require("q"); + +var BaseGenerator = function(options) { + this.options = options; +}; + +BaseGenerator.prototype.convertFile = function(input) { + return Q.reject(new Error("Could not convert "+input)); +}; + +BaseGenerator.prototype.transferFile = function(input) { + console.log("tranfer file", input); + /*return fs.copy( + path.join(root, file), + path.join(output, file) + );*/ +}; + +BaseGenerator.prototype.transferFolder = function(input) { + console.log("tranfer folder", input); + /*return fs.mkdirp( + path.join(output, file) + );*/ +}; + +BaseGenerator.prototype.finish = function() { + return Q.reject(new Error("Could not finish generation")); +}; + + + +module.exports = BaseGenerator;
\ No newline at end of file diff --git a/lib/generate/generator_site.js b/lib/generate/generator_site.js new file mode 100644 index 0000000..5d17b0c --- /dev/null +++ b/lib/generate/generator_site.js @@ -0,0 +1,32 @@ +var BaseGenerator = require("./generator"); +var util = require("util"); + +var Generator = function() { + BaseGenerator.apply(this, arguments); +}; +util.inherits(Generator, BaseGenerator); + +Generator.prototype.convertFile = function(input) { + console.log("convert file", input) +}; + +Generator.prototype.finish = function() { + console.log("finish generation"); + // Symlink index.html to README.html + /*.then(function() { + return fs.symlink( + path.join(output, 'README.html'), + path.join(output, 'index.html') + ); + }) + + // Copy assets + .then(function() { + return fs.copy( + path.join(__dirname, "../../assets/static"), + path.join(output, "gitbook") + ); + });*/ +}; + +module.exports = Generator;
\ No newline at end of file diff --git a/lib/generate/index.js b/lib/generate/index.js index ee5ffc4..a32ba1a 100644 --- a/lib/generate/index.js +++ b/lib/generate/index.js @@ -7,10 +7,17 @@ var fs = require("./fs"); var parse = require("../parse"); var template = require("./template"); +var generators = { + "site": require("./generator_site") +}; + var generate = function(root, output, options) { + var generator = null; var files, summary, navigation, tpl; options = _.defaults(options || {}, { + generator: "site", + // Book title, keyword, description title: null, description: "Book generated using GitBook", @@ -24,6 +31,10 @@ var generate = function(root, output, options) { return Q.reject(new Error("Need options.github and options.title")); } + if (!generators[options.generator]) { + return Q.reject(new Error("Invalid generator (availables are: "+_.keys(generators).join(", "))); + } + // Clean output folder return fs.remove(output) @@ -56,23 +67,9 @@ var generate = function(root, output, options) { }); }) - // Create template + // Create the generator .then(function() { - tpl = template({ - root: root, - output: output, - locals: { - title: options.title, - description: options.description, - - githubAuthor: options.github.split("/")[0], - githubId: options.github, - githubHost: options.githubHost, - - summary: summary, - allNavigation: navigation - } - }); + generator = new generators[options.generator](); }) // Copy file and replace markdown file @@ -81,46 +78,22 @@ var generate = function(root, output, options) { _.chain(files) .map(function(file) { if (!file) return; - var _html = file.replace(".md", ".html"); - // Folder if (file[file.length -1] == "/") { - return fs.mkdirp( - path.join(output, file) - ); - } - - // Markdown file (only from the summary) - else if (path.extname(file) == ".md" && navigation[_html] != null) { - return tpl(file, file.replace(".md", ".html")); - } - - // Copy file - else { - return fs.copy( - path.join(root, file), - path.join(output, file) - ); + return generator.transferFolder(file); + } else if (path.extname(file) == ".md" && navigation[file] != null) { + return generator.convertFile(file); + } else { + return generator.transferFile(file); } }) .value() ); }) - // Symlink index.html to README.html + // Finish gneration .then(function() { - return fs.symlink( - path.join(output, 'README.html'), - path.join(output, 'index.html') - ); - }) - - // Copy assets - .then(function() { - return fs.copy( - path.join(__dirname, "../../assets/static"), - path.join(output, "gitbook") - ); + return generator.finish(); }); }; |