1 |
|
2 | (function() {
|
3 | var Dicts, _, consolidate, isCurrentPage, path, populateDynamic, replacePlaceholders, swig;
|
4 |
|
5 | path = require('path');
|
6 |
|
7 | _ = require('lodash');
|
8 |
|
9 | swig = require('swig');
|
10 |
|
11 | consolidate = require('consolidate');
|
12 |
|
13 | Dicts = require('./dictionaries');
|
14 |
|
15 | replacePlaceholders = require('./util').replacePlaceholders;
|
16 |
|
17 | isCurrentPage = function(navNode, $nav) {
|
18 | var ref;
|
19 | if (navNode.isDynamic) {
|
20 | return (ref = $nav.url) != null ? ref.match(navNode.linkRe) : void 0;
|
21 | }
|
22 | return $nav.url === navNode.link;
|
23 | };
|
24 |
|
25 | populateDynamic = function(template, variablesContext, defaults) {
|
26 | var context;
|
27 | context = _.assign({}, defaults, variablesContext);
|
28 | return replacePlaceholders(template, context);
|
29 | };
|
30 |
|
31 | exports.register = function(consolidate, config) {
|
32 | var dicts;
|
33 | dicts = Dicts(config);
|
34 | swig.setFilter('navIsCurrentPage', isCurrentPage);
|
35 | swig.setFilter('navGetLink', function(navNode, $nav) {
|
36 | if (isCurrentPage(navNode, $nav)) {
|
37 | return $nav.url;
|
38 | } else {
|
39 | return populateDynamic(navNode.link, null, dicts.getDefaults());
|
40 | }
|
41 | });
|
42 | swig.setFilter('navGetTitle', function(navNode, $nav) {
|
43 | if (isCurrentPage(navNode, $nav) && navNode.isDynamic) {
|
44 | return $nav.title;
|
45 | } else {
|
46 | return navNode.title;
|
47 | }
|
48 | });
|
49 | swig.setFilter('navIsCurrentTree', function(navNode, $nav) {
|
50 | var ref;
|
51 | return !!((ref = $nav.path) != null ? ref[navNode.$id] : void 0);
|
52 | });
|
53 | return consolidate.requires.swig = swig;
|
54 | };
|
55 |
|
56 | exports.configureExpress = function(app, config) {
|
57 | exports.register(consolidate, config);
|
58 | app.engine('html', consolidate.swig);
|
59 | app.set('view engine', 'html');
|
60 | return app.set('views', path.resolve(config.rootDir, config.templatesDir));
|
61 | };
|
62 |
|
63 | exports.swig = swig;
|
64 |
|
65 | }).call(this);
|