Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Ghetto fabulous templating system. More ghetto than fabulous.
// Ghetto fabulous template system for replacing values in strings. If {{.foo}}
// or {{.bar[0].baz}} is encountered (leading . or ( or [ char), attempt to
// access properties of data object like `` or `[0].baz`.
// Alternately, if {{foo}} or {{bar("baz")}} is encountered (no leading dot),
// simply evaluate `foo` or `bar("baz")`. If an error occurs, return empty
// string. Oh yeah, you have to pass the result of ghettoTmpl to eval. :)
function ghettoTmpl(data, str) {
ghettoTmpl._data = data;
ghettoTmpl._str = str;
return "ghettoTmpl._str.replace(/\\{\\{(([.[(])?.*?)\\}\\}/g, function(_, str, dot) {"
+ "return eval('try{' + (dot ? 'ghettoTmpl._data' : '') + str + '}catch(e){\"\"}');"
+ "})";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment