Sha256: cc6626743c57473c995a3a3dc0bf1d3febe1bedc0019887410c35fdf8c9942a0

Contents?: true

Size: 1.1 KB

Versions: 9

Compression:

Stored size: 1.1 KB

Contents

Johnson.templatize = function (template, begin, end) {
  var begin = begin || "<%"
  var end = end || "%>"
  var rebegin = begin.replace(/([\]{}[\\])/g, '\\$1');
  var reend = end.replace(/([\]{}[\\])/g, '\\$1');

  var code = "_context = _context || {}; with (_context) {" +
    "var _result = '';" +
      template
        .replace(/[\t\r\n]/g, ' ')
        .replace(/^(.*)$/, end + '$1' + begin)
        .replace(new RegExp(reend + "(.*?)" + rebegin, "g"), function (text) {
          return text
            .replace(new RegExp("^" + reend + "(.*)" + rebegin + "$"), "$1")
            .replace(/\\/g, "\\\\")
            .replace(/'/g, "\\'")
            .replace(/^(.*)$/, 
              function(sub, m) { 
                return end + (m == "" ? "" : "_result += '" + m + "';") + begin;
              });
        })
        .replace(new RegExp(rebegin + "=(.*?)" + reend, "g"), "_result += ($1);")
        .replace(new RegExp(rebegin + "(.*?)" + reend, "g"), ' $1 ')
        .replace(new RegExp("^" + reend + "(.*)" + rebegin + "$"), '$1') +
    "return _result;" +
  "}";

  return new Function("_context", code);
};

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
jbarnette-johnson-1.0.0.200806240111 js/johnson/template.js
jbarnette-johnson-1.0.0.200807291507 js/johnson/template.js
jbarnette-johnson-1.0.0.200808062051 js/johnson/template.js
jbarnette-johnson-1.0.0.200808062111 js/johnson/template.js
jbarnette-johnson-1.0.0.200811251942 js/johnson/template.js
jbarnette-johnson-1.0.0.20081126120511 js/johnson/template.js
jbarnette-johnson-1.0.0.20090127202936 js/johnson/template.js
jbarnette-johnson-1.0.0.20090225110820 js/johnson/template.js
jbarnette-johnson-1.0.0.20090326122910 js/johnson/template.js