1 | path = require('path')
|
2 | _ = require('lodash')
|
3 | swig = require('swig')
|
4 | consolidate = require('consolidate')
|
5 | Dicts = require('./dictionaries')
|
6 |
|
7 | { replacePlaceholders } = require('./util')
|
8 |
|
9 | isCurrentPage = (navNode, selfLink, navPath) ->
|
10 | if navNode.isDynamic
|
11 | return selfLink.match(navNode.linkRe)
|
12 | if navPath
|
13 | return navPath[navNode.$id]
|
14 | return selfLink is navNode.link
|
15 |
|
16 | populateDynamic = (template, variablesContext, defaults) ->
|
17 | context = _.assign({}, defaults, variablesContext)
|
18 | return replacePlaceholders(template, context)
|
19 |
|
20 | exports.register = (consolidate, config) ->
|
21 | dicts = Dicts(config)
|
22 |
|
23 | swig.setFilter 'isCurrentPage', isCurrentPage
|
24 |
|
25 | swig.setFilter 'getLink', (navNode, selfLink, navPath) ->
|
26 | if isCurrentPage(navNode, selfLink, navPath)
|
27 | return selfLink
|
28 | else
|
29 | return populateDynamic(navNode.link, null, dicts.getDefaults())
|
30 |
|
31 | swig.setFilter 'getTitle', (navNode, selfLink, navPath, title) ->
|
32 | if isCurrentPage(navNode, selfLink, navPath) and navNode.isDynamic
|
33 | return title
|
34 | else
|
35 | return navNode.title
|
36 |
|
37 | swig.setFilter 'isCurrentTree', (navNode, navPath) ->
|
38 | return navPath[navNode.$id]
|
39 |
|
40 | consolidate.requires.swig = swig
|
41 |
|
42 | exports.configureExpress = (app, config) ->
|
43 | exports.register(consolidate, config)
|
44 | app.engine('html', consolidate.swig)
|
45 | app.set('view engine', 'html')
|
46 | app.set('views', path.resolve(config.rootDir, config.templatesDir))
|
47 |
|
48 | exports.swig = swig
|