Skip to content

Instantly share code, notes, and snippets.

@attilagyorffy
Forked from cowboy/ba-ghettotmpl.js
Created June 11, 2011 18:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save attilagyorffy/1020830 to your computer and use it in GitHub Desktop.
Save attilagyorffy/1020830 to your computer and use it in GitHub Desktop.
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 `data.foo` or `data.bar[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