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, $nav) ->
|
10 | if navNode.isDynamic
|
11 | return $nav.url?.match(navNode.linkRe)
|
12 | return $nav.url is navNode.link
|
13 |
|
14 | populateDynamic = (template, variablesContext, defaults) ->
|
15 | context = _.assign({}, defaults, variablesContext)
|
16 | return replacePlaceholders(template, context)
|
17 |
|
18 | exports.register = (consolidate, config) ->
|
19 | dicts = Dicts(config)
|
20 |
|
21 | swig.setFilter 'navIsCurrentPage', isCurrentPage
|
22 |
|
23 | swig.setFilter 'navGetLink', (navNode, $nav) ->
|
24 | if isCurrentPage(navNode, $nav)
|
25 | return $nav.url
|
26 | else
|
27 | return populateDynamic(navNode.link, null, dicts.getDefaults())
|
28 |
|
29 | swig.setFilter 'navGetTitle', (navNode, $nav) ->
|
30 | if isCurrentPage(navNode, $nav) and navNode.isDynamic
|
31 | return $nav.title
|
32 | else
|
33 | return navNode.title
|
34 |
|
35 | swig.setFilter 'navIsCurrentTree', (navNode, $nav) ->
|
36 | return !!$nav.path?[navNode.$id]
|
37 |
|
38 | consolidate.requires.swig = swig
|
39 |
|
40 | exports.configureExpress = (app, config) ->
|
41 | exports.register(consolidate, config)
|
42 | app.engine('html', consolidate.swig)
|
43 | app.set('view engine', 'html')
|
44 | app.set('views', path.resolve(config.rootDir, config.templatesDir))
|
45 |
|
46 | exports.swig = swig
|