Преглед изворни кода

Precompile the tokenizer regex for the common cases.

tags/0.5.0-vsc
Sahab Yazdani пре 15 година
родитељ
комит
5a6a58d038
1 измењених фајлова са 17 додато и 2 уклоњено
  1. +17
    -2
      mustache.js

+ 17
- 2
mustache.js Прегледај датотеку

@@ -12,6 +12,9 @@ var Mustache = function() {
var Renderer = function(send_func, mode) {
this._escapeCompiledRegex = null;
if (!Renderer.TokenizerRegex) {
Renderer.TokenizerRegex = this._createTokenizerRegex('{{', '}}');
}
this.user_send_func = send_func;
if (mode==='interpreter' || !mode) {
@@ -42,6 +45,8 @@ var Mustache = function() {
this.splitFunc = String.prototype.split;
}
};
Renderer.TokenizerRegex = null;
Renderer.prototype = {
capturingSplit: function(separator) {
// fix up the stupidness that is IE's broken String.split implementation
@@ -151,7 +156,7 @@ var Mustache = function() {
};
},
tokenize: function(template, openTag, closeTag) {
_createTokenizerRegex: function(openTag, closeTag) {
var delimiters = [
'\\{',
'&',
@@ -168,7 +173,17 @@ var Mustache = function() {
delimiters.unshift(this.escape_regex(openTag));
delimiters.unshift(this.escape_regex(closeTag));
var regex = new RegExp('(' + delimiters.join('|') + ')');
return new RegExp('(' + delimiters.join('|') + ')');
},
tokenize: function(template, openTag, closeTag) {
var regex;
if (openTag==='{{' && closeTag==='}}') {
// the common case, use the stored compiled regex
regex = Renderer.TokenizerRegex;
} else {
regex = this._createTokenizerRegex(openTag, closeTag);
}
var tokens = this.splitFunc.call(template, regex);
var cleaned_tokens = [];


Loading…
Откажи
Сачувај