-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
80 lines (65 loc) · 1.47 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
'use strict';
/**
* # Toga Pura Compiler
*
* A light theme for [Toga](http://togajs.github.io/) documentation.
*/
var proto,
Transform = require('stream').Transform,
handlebars = require('handlebars'),
inherits = require('mtil/function/inherits'),
mixin = require('mtil/object/mixin'),
/**
* Default options.
*/
defaults = {
title: 'Documentation'
};
require('./assets/helpers')(handlebars);
require('./assets/partials')(handlebars);
/**
* @class PuraCompiler
* @extends Transform
*
* @constructor
* @param {Object} options
*/
function PuraCompiler(options) {
if (!(this instanceof PuraCompiler)) {
return new PuraCompiler(options);
}
/**
* @property options
* @type {Object}
*/
this.options = mixin({}, defaults, options);
Transform.call(this, { objectMode: true });
}
proto = inherits(PuraCompiler, Transform);
/**
* @method _transform
* @param {Vinyl} file
* @param {String} enc
* @param {Function} cb
*/
proto._transform = function (file, enc, cb) {
var options = this.options,
path = file && file.path,
ast = file && file.ast;
if (!ast) {
return cb();
}
// Create new path
// TODO: refactor this
file.path = file.base + file.path.replace(file.cwd, '').replace(/[\\\/]/g, '_') + '.html';
// Create new contents
file.contents = new Buffer(handlebars.partials.index({
title: options.title,
path: path.replace(file.cwd, ''),
ext: path.split('.').pop(),
ast: ast
}));
this.push(file);
cb();
};
exports.compiler = PuraCompiler;