Skip to content

Instantly share code, notes, and snippets.

@akorchev
Created March 8, 2011 12:11
Show Gist options
  • Select an option

  • Save akorchev/860205 to your computer and use it in GitHub Desktop.

Select an option

Save akorchev/860205 to your computer and use it in GitHub Desktop.

Revisions

  1. akorchev revised this gist Mar 8, 2011. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion micro2.js
    Original file line number Diff line number Diff line change
    @@ -11,7 +11,7 @@
    // Generate a reusable function that will serve as a template
    // generator (and which will be cached).
    new Function("data",
    "var p=[],print=function(){p.push.apply(p,arguments);};" +
    "var p=[];" +

    // Introduce the data as local variables using with(){}
    "p.push('" +
  2. akorchev revised this gist Mar 8, 2011. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions micro2.js
    Original file line number Diff line number Diff line change
    @@ -10,11 +10,11 @@

    // Generate a reusable function that will serve as a template
    // generator (and which will be cached).
    new Function("obj",
    new Function("data",
    "var p=[],print=function(){p.push.apply(p,arguments);};" +

    // Introduce the data as local variables using with(){}
    "with(obj){p.push('" +
    "p.push('" +

    // Convert the template into pure JavaScript
    str.replace(/[\r\t\n]/g, " ")
    @@ -24,7 +24,7 @@ str.replace(/[\r\t\n]/g, " ")
    .replace(/<%=(.+?)%>/g, "',$1,'")
    .split("<%").join("');")
    .split("%>").join("p.push('")
    + "');}return p.join('');");
    + "');return p.join('');");
    // Provide some basic currying to the user
    return data ? fn(data) : fn;
    };
  3. akorchev revised this gist Mar 8, 2011. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion micro2.js
    Original file line number Diff line number Diff line change
    @@ -1,7 +1,7 @@
    (function() {
    var cache = {};

    this.tmpl = function tmpl(str, data) {
    this.tmpl2 = function tmpl(str, data) {
    // Figure out if we're getting a template, or if we need to
    // load the template - and be sure to cache the result.
    var fn = !/\W/.test(str) ?
  4. akorchev created this gist Mar 8, 2011.
    31 changes: 31 additions & 0 deletions micro2.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,31 @@
    (function() {
    var cache = {};

    this.tmpl = function tmpl(str, data) {
    // Figure out if we're getting a template, or if we need to
    // load the template - and be sure to cache the result.
    var fn = !/\W/.test(str) ?
    cache[str] = cache[str] ||
    tmpl(document.getElementById(str).innerHTML) :

    // Generate a reusable function that will serve as a template
    // generator (and which will be cached).
    new Function("obj",
    "var p=[],print=function(){p.push.apply(p,arguments);};" +

    // Introduce the data as local variables using with(){}
    "with(obj){p.push('" +

    // Convert the template into pure JavaScript
    str.replace(/[\r\t\n]/g, " ")
    .replace(/'(?=[^%]*%>)/g,"\t")
    .split("'").join("\\'")
    .split("\t").join("'")
    .replace(/<%=(.+?)%>/g, "',$1,'")
    .split("<%").join("');")
    .split("%>").join("p.push('")
    + "');}return p.join('');");
    // Provide some basic currying to the user
    return data ? fn(data) : fn;
    };
    })();