summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2014-04-04 09:45:04 -0700
committerSamy Pessé <samypesse@gmail.com>2014-04-04 09:45:04 -0700
commit9dce855113b9217201cbf1cac851da44d3238fd4 (patch)
tree9e18cfd63d12917c6fe6a393398616a19cf26a13 /lib
parent57e2595a3ea65de63822d105010b2f75cd50636c (diff)
downloadgitbook-9dce855113b9217201cbf1cac851da44d3238fd4.zip
gitbook-9dce855113b9217201cbf1cac851da44d3238fd4.tar.gz
gitbook-9dce855113b9217201cbf1cac851da44d3238fd4.tar.bz2
Add class BaseGenerator
Diffstat (limited to 'lib')
-rw-r--r--lib/generate/generator.js32
-rw-r--r--lib/generate/generator_site.js32
-rw-r--r--lib/generate/index.js67
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();
});
};