Some changes to allow scoped overrides and direct use of template functions #19

Open
wants to merge 1 commit into from

1 participant

@fmarsoni

This allow to write:

Jaml.render(function(data) { div(....) }, data);
to easily use a template without registering it

Jaml.register('tmpl', function(data) {....});
Jaml.render({tmpl: function(data) { div(....) }}, 'tmpl', data);
to ovveride a template without overwriting already registered template

A slightly more complex example:
Jaml.register('tmpl', function(data) { p(....)});
Jaml.register('tmpl2', function(data) { div(render('tmpl', data))});
Jaml.render({
tmpl: function(data) { div(....) }
}, 'tmpl2', data); -> <div><div>....</div></div>
Jaml.render('tmpl2', data); -> <div><p>....</p></div>

To allow "render" function in place of Jaml.render I had to rename "render" method in Jaml.Template to "_render".
I changed tests according to it and added two more.

This is just an idea, even if I'm using theese changes in a large project where I need to improve reusability of templates and avoid accidental overwrites.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment