diff options
Diffstat (limited to 'lib/generate')
-rw-r--r-- | lib/generate/index.js | 5 | ||||
-rw-r--r-- | lib/generate/page/index.js | 57 | ||||
-rw-r--r-- | lib/generate/site/index.js | 5 |
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')); }; |