summaryrefslogtreecommitdiffstats
path: root/lib/generate/page
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2014-04-04 14:40:27 -0700
committerSamy Pessé <samypesse@gmail.com>2014-04-04 14:40:27 -0700
commitb3adedb468231e1a8497607ceb7455d58037c2c4 (patch)
tree44ef8c3e2ca6b82e18cd295f2da9368a22246ece /lib/generate/page
parent026e4362d825f004c4eb9a6471dc5bb91bbac198 (diff)
downloadgitbook-b3adedb468231e1a8497607ceb7455d58037c2c4.zip
gitbook-b3adedb468231e1a8497607ceb7455d58037c2c4.tar.gz
gitbook-b3adedb468231e1a8497607ceb7455d58037c2c4.tar.bz2
Add base for generating single page html
Diffstat (limited to 'lib/generate/page')
-rw-r--r--lib/generate/page/index.js57
1 files changed, 55 insertions, 2 deletions
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