summaryrefslogtreecommitdiffstats
path: root/lib/generate
diff options
context:
space:
mode:
Diffstat (limited to 'lib/generate')
-rw-r--r--lib/generate/index.js5
-rw-r--r--lib/generate/page/index.js57
-rw-r--r--lib/generate/site/index.js5
3 files changed, 59 insertions, 8 deletions
diff --git a/lib/generate/index.js b/lib/generate/index.js
index 9dcf409..4ed9f08 100644
--- a/lib/generate/index.js
+++ b/lib/generate/index.js
@@ -30,7 +30,10 @@ var generate = function(options) {
// Origin github repository id
github: null,
- githubHost: 'https://github.com/'
+ githubHost: 'https://github.com/',
+
+ // Theming
+ theme: path.resolve(__dirname, '../../theme')
});
if (!options.github || !options.title || !options.input || !options.output) {
diff --git a/lib/generate/page/index.js b/lib/generate/page/index.js
index 4b22dba..896bf52 100644
--- a/lib/generate/page/index.js
+++ b/lib/generate/page/index.js
@@ -1,6 +1,7 @@
var util = require("util");
var path = require("path");
var Q = require("q");
+var swig = require('swig');
var fs = require("../fs");
var parse = require("../../parse");
@@ -12,6 +13,12 @@ var BaseGenerator = require("../generator");
*/
var Generator = function() {
BaseGenerator.apply(this, arguments);
+
+ // Load base template
+ this.template = swig.compileFile(path.resolve(this.options.theme, 'templates/page.html'));
+
+ // List of pages content
+ this.pages = [];
};
util.inherits(Generator, BaseGenerator);
@@ -20,11 +27,57 @@ Generator.prototype.transferFile = function(input) {
};
Generator.prototype.convertFile = function(content, input) {
-
+ var that = this;
+ var json = {
+ path: input,
+ progress: parse.progress(this.options.navigation, input)
+ };
+
+ return Q()
+ .then(function() {
+ return parse.page(content, {
+ repo: that.options.githubId,
+ dir: path.dirname(input) || '/'
+ });
+ })
+ .then(function(sections) {
+ json.content = sections;
+ })
+ .then(function() {
+ that.pages.push(json);
+ });
};
Generator.prototype.finish = function() {
- // ignore
+ var that = this;
+ var basePath = ".";
+ var output = path.join(this.options.output, "index.html");
+
+ return Q()
+ .then(function() {
+ return that.template({
+ title: that.options.title,
+ description: that.options.description,
+
+ githubAuthor: that.options.github.split("/")[0],
+ githubId: that.options.github,
+ githubHost: that.options.githubHost,
+
+ summary: that.options.summary,
+ allNavigation: that.options.navigation,
+
+ pages: that.pages,
+
+ basePath: basePath,
+ staticBase: path.join(basePath, "gitbook"),
+ });
+ })
+ .then(function(html) {
+ return fs.writeFile(
+ output,
+ html
+ );
+ });
};
module.exports = Generator; \ No newline at end of file
diff --git a/lib/generate/site/index.js b/lib/generate/site/index.js
index 3110d4f..84a0d2f 100644
--- a/lib/generate/site/index.js
+++ b/lib/generate/site/index.js
@@ -21,11 +21,6 @@ swig.setFilter('mdLink', function(link) {
var Generator = function() {
BaseGenerator.apply(this, arguments);
- // Options
- this.options = _.defaults(this.options, {
- theme: path.resolve(__dirname, '../../../theme')
- });
-
// Load base template
this.template = swig.compileFile(path.resolve(this.options.theme, 'templates/site.html'));
};