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

i18n twitter stuff

tags/0.4.0
Ben Cherry пре 15 година
родитељ
комит
a7f71e1635
1 измењених фајлова са 31 додато и 2 уклоњено
  1. +31
    -2
      mustache.js

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

@@ -13,7 +13,8 @@ var Mustache = function() {
pragmas: {}, pragmas: {},
buffer: [], buffer: [],
pragmas_implemented: { pragmas_implemented: {
"IMPLICIT-ITERATOR": true
"IMPLICIT-ITERATOR": true,
"TRANSLATION-HINT": true
}, },
context: {}, context: {},


@@ -34,8 +35,15 @@ var Mustache = function() {
} }
} }


// Branching or moving down the partial stack, save any translation mode info.
if (this.pragmas['TRANSLATION-HINT']) {
context['_mode'] = this.pragmas['TRANSLATION-HINT']['mode'];
}

template = this.render_pragmas(template); template = this.render_pragmas(template);


template = this.render_i18n(template, context, partials);

var html = this.render_section(template, context, partials); var html = this.render_section(template, context, partials);


var stillNeedsToRender = (html === template); var stillNeedsToRender = (html === template);
@@ -110,6 +118,27 @@ var Mustache = function() {
return this.render(partials[name], context[name], partials, true); return this.render(partials[name], context[name], partials, true);
}, },


render_i18n: function(html, context, partials) {
if (html.indexOf(this.otag + "_i") == -1) {
return html;
}
var that = this;
var regex = new RegExp(this.otag + "\\_i" + this.ctag +
"\\s*([\\s\\S]+?)" + this.otag + "\\/i" + this.ctag, "mg");

// for each {{_i}}{{/i}} section do...
return html.replace(regex, function(match, content) {
var translation_mode = undefined;
if (that.pragmas && that.pragmas["TRANSLATION-HINT"] && that.pragmas["TRANSLATION-HINT"]['mode']) {
translation_mode = { _mode: that.pragmas["TRANSLATION-HINT"]['mode'] };
} else if (context['_mode']) {
translation_mode = { _mode: context['_mode'] };
}

return that.render(_(content, translation_mode), context, partials, true);
});
},

/* /*
Renders inverted (^) and normal (#) sections Renders inverted (^) and normal (#) sections
*/ */
@@ -333,7 +362,7 @@ var Mustache = function() {
if(send_fun) { if(send_fun) {
renderer.send = send_fun; renderer.send = send_fun;
} }
renderer.render(template, view, partials);
renderer.render(template, view || {}, partials);
if(!send_fun) { if(!send_fun) {
return renderer.buffer.join("\n"); return renderer.buffer.join("\n");
} }


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