Skip to content

Commit a3b2097

Browse files
authored
Merge pull request #2 from exoup/eta-support-1
feature: add support for Eta template engine
2 parents 424a693 + 499c634 commit a3b2097

File tree

7 files changed

+96
-0
lines changed

7 files changed

+96
-0
lines changed

examples/eta/express.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// npm install express
2+
const path = require('node:path');
3+
const express = require('express');
4+
const cons = require('../../');
5+
6+
// Example of declaring eta with custom options.
7+
const eta = new (require('eta').Eta)({
8+
// Have to let Express handle the views directory instead.
9+
views: '.',
10+
varName: 'that',
11+
autoFilter: true,
12+
filterFunction(val) {
13+
if (typeof val === 'string') {
14+
return val.toUpperCase();
15+
}
16+
}
17+
});
18+
19+
const app = express();
20+
21+
cons.requires.eta = eta;
22+
app.engine('eta', cons.eta);
23+
app.set('view engine', 'eta');
24+
app.set('views', path.join(__dirname, './views'));
25+
26+
const users = [];
27+
users.push({ name: 'tobi' }, { name: 'loki' }, { name: 'jane' });
28+
29+
app.get('/', function (req, res) {
30+
res.render('index', {
31+
title: 'Consolidate.js'
32+
});
33+
});
34+
35+
app.get('/users', function (req, res) {
36+
res.render('users', {
37+
title: 'Users',
38+
users
39+
});
40+
});
41+
42+
app.listen(3000);
43+
console.log('Express server listening on port 3000');

examples/eta/views/index.eta

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<h1><%= that.title %></h1>
2+
<p>Welcome to the <%= that.title %> demo. Click a link:</p>
3+
<ul>
4+
<li><a href="/users">/users</a></li>
5+
</ul>

examples/eta/views/users.eta

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<h1><%= that.title %></h1>
2+
<ul>
3+
<% that.users.forEach((user) => { %>
4+
<li><%= user.name %></li>
5+
<% /* You can't see me */ %>
6+
<% }); %>
7+
</ul>

lib/consolidate.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -750,6 +750,44 @@ exports.ejs.render = function (str, options, cb) {
750750
});
751751
};
752752

753+
/**
754+
* Eta support.
755+
*/
756+
757+
exports.eta = function (path, options, cb) {
758+
return promisify(cb, function (cb) {
759+
try {
760+
const engine =
761+
requires.eta ||
762+
(requires.eta = new (require('eta').Eta)({
763+
views: '.'
764+
}));
765+
cb(null, engine.render(path, options));
766+
} catch (err) {
767+
cb(err);
768+
}
769+
});
770+
};
771+
772+
/**
773+
* Eta string support.
774+
*/
775+
776+
exports.eta.render = function (str, options, cb) {
777+
return promisify(cb, function (cb) {
778+
try {
779+
const engine =
780+
requires.eta ||
781+
(requires.eta = new (require('eta').Eta)({
782+
views: '.'
783+
}));
784+
cb(null, engine.renderString(str, options));
785+
} catch (err) {
786+
cb(err);
787+
}
788+
});
789+
};
790+
753791
/**
754792
* Eco support.
755793
*/

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"ejs": "^3.1.9",
2828
"eslint": "8.42.0",
2929
"eslint-config-xo-lass": "2",
30+
"eta": "^3.1.1",
3031
"fixpack": "^4.0.0",
3132
"haml-coffee": "^1.14.1",
3233
"hamlet": "^0.3.3",

test/consolidate.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ require('./shared/filters').test('liquid-node');
1717
require('./shared/includes').test('liquid-node');
1818

1919
require('./shared').test('ejs');
20+
require('./shared').test('eta');
2021
require('./shared').test('swig');
2122
require('./shared').test('jazz');
2223
require('./shared').test('jqtpl');

test/fixtures/eta/user.eta

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<p><%= it.user.name %></p>

0 commit comments

Comments
 (0)