Show
Ignore:
Timestamp:
12/26/07 14:20:32 (7 years ago)
Author:
cho45
Message:

lang/javascript/blosxom.rhino/ejs.js,
lang/javascript/blosxom.rhino/blosxom.rhino.js:

with つかうかどうか選べるように

Location:
lang/javascript/blosxom.rhino
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/blosxom.rhino/blosxom.rhino.js

    r3057 r3599  
    5252 
    5353 
    54                 var template = new EJS(this._readLines("template"+flavour).join("\n")); 
     54                var template = new EJS(this._readLines("template"+flavour).join("\n"), {useWith:true}); 
    5555                System.out.println(template.run({ 
    5656                        title       : this.config.title, 
  • lang/javascript/blosxom.rhino/ejs.js

    r3598 r3599  
    11#!rhino 
    22 
    3 EJS = function (template) { return (this instanceof EJS) ? this.initialize(template) : new EJS(template) }; 
     3EJS = function (template, opts) { return (this instanceof EJS) ? this.initialize(template, opts) : new EJS(template, opts) }; 
    44EJS.prototype = { 
    5         initialize : function (template) { 
     5        initialize : function (template, opts) { 
    66                this.template  = template; 
    7                 this.processor = this.compile(template); 
     7                this.processor = this.compile(template, opts || {}); 
    88                // print(this.processor); 
    99        }, 
     
    1313        }, 
    1414 
    15         compile : function (s) { 
     15        compile : function (s, opts) { 
    1616                s = String(s); 
    1717                ret = [ 
    18                         'var ret = [], escapeHTML = (', uneval(EJS.escapeFun), ")();", 
    19                         'with (stash) {', 
     18                        'var ret = [], escapeHTML = EJS.escapeHTML;', 
    2019                        'ret.push(""' 
    2120                ]; 
    2221 
    23                 var m, c; 
     22                var m, c, flag; 
    2423                while (m = s.match(/<%(=*)/)) { 
    25                         var flag = m[1]; 
     24                        flag = m[1]; 
    2625                        ret.push(',', uneval(s.slice(0, m.index))); 
    2726                        s = s.slice(m.index + m[0].length); 
     
    4241                        } 
    4342                } 
    44                 ret.push(',', uneval(s), ');'); 
    45  
    46                 ret.push('return ret.join("") }'); 
    47                 return new Function("stash", ret.join('')); 
     43                ret.push( 
     44                        ',', uneval(s), ');', 
     45                        'return ret.join("");' 
     46                ); 
     47                if (opts.useWith) { 
     48                        ret.unshift("with (s) {"); 
     49                        ret.push("}"); 
     50                } 
     51                return new Function("s", ret.join('')); 
    4852        } 
    4953}; 
    50 EJS.escapeFun = function () { 
     54EJS.escapeHTML = (function () { 
    5155        var map = { "&" : "&amp;", "<" : "&lt;" , ">" : "&gt;"}; 
    5256        return function (str) { 
     
    5559                }); 
    5660        }; 
    57 }; 
     61})(); 
    5862 
    59 //[ 
     63 
     64//--- 
     65 
     66//var tester = [ 
    6067//      "aaaa<%=foo%>bbbbb<%=bar%>ccc", 
    6168//      "aaaa<% if (foo) {%>bbbb<%=bar%><%}%>ccc", 
    62 //].forEach(function (i) { 
    63 //      var t = EJS(i); 
     69//]; 
     70// 
     71//for (var i = 0; i < tester.length; i++) { 
     72//      var t = EJS(tester[i], {useWith: true}); 
    6473//      print(t.processor); 
    6574//      print(t.run({foo:"test", bar:"foobar"})); 
    66 //}); 
     75//} 
     76// 
     77//COUNT = 500; 
     78// 
     79//var t = "aaaa<%=s.foo%>bbbbb<%=s.bar%>ccc"; 
     80//var e = EJS(t); 
     81//var f = EJS(t, {useWith:true}); 
     82//var m = {foo:"test", bar:"foobar"}; 
     83//var b = [ 
     84//      function compile () { 
     85//              EJS(t); 
     86//      }, 
     87//      function processing () { 
     88//              e.run(m); 
     89//      }, 
     90//      function processingWithWith () { 
     91//              f.run(m); 
     92//      }, 
     93//      function replace () { 
     94//              t.replace(/<%=s\.(\w+)%>/, function (_,a) { 
     95//                      return m[a]; 
     96//              }); 
     97//      } 
     98//]; 
     99// 
     100// 
     101//for (var i = 0; i < b.length; i++) { 
     102//      var fun = b[i]; 
     103//      print(fun.name); 
     104//      var res = 0; 
     105//      for (var j = 0; j < COUNT; j++) { 
     106//              var now = (new Date).getTime(); 
     107//              fun(); 
     108//              res += (new Date).getTime() - now; 
     109//      } 
     110//      print(res + "ms / " + (res/COUNT) + "ms"); 
     111//}; 
    67112 
    68113//importPackage(java.io);