summaryrefslogtreecommitdiffstats
path: root/lib/generate/template.js
blob: 9b852288bc8c253f2dfe5433f912a032064ba5e6 (plain)
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
var path = require("path");
var swig = require('swig');
var hljs = require('highlight.js');

var links = require('../utils/').links;
var pkg = require('../../package.json');

swig.setDefaults({
    locals: {
        gitbook: {
            version: pkg.version
        }
    }
});

// Swig filter for returning the count of lines in a code section
swig.setFilter('lines', function(content) {
    return content.split('\n').length;
});

// Swig filter for returning a link to the associated html file of a markdown file
swig.setFilter('mdLink', function(link) {
    var link = link.replace(".md", ".html");
    if (link == "README.html") link = "index.html";
    return link;
});

// Swig filter: highlight coloration
swig.setFilter('code', function(code, lang) {
    try {
        return hljs.highlight(lang, code).value;
    } catch(e) {
        return hljs.highlightAuto(code).value;
    }
});

// Convert a level into a deep level
swig.setFilter('lvl', function(lvl) {
    return lvl.split(".").length;
});

// Join path
swig.setFilter('pathJoin', function(base, _path) {
    return path.join(base, _path);
});

// Is a link an absolute link
swig.setFilter('isExternalLink', function(link) {
    return links.isExternal(link);
});

module.exports = swig;