Kaynağa Gözat

Sanitizer callback for unescaped values

pull/529/head
Dima Voytenko 10 yıl önce
ebeveyn
işleme
0739319f83
2 değiştirilmiş dosya ile 29 ekleme ve 1 silme
  1. +11
    -1
      mustache.js
  2. +18
    -0
      test/sanitize-test.js

+ 11
- 1
mustache.js Dosyayı Görüntüle

@@ -550,8 +550,12 @@

Writer.prototype.unescapedValue = function unescapedValue (token, context) {
var value = context.lookup(token[1]);
if (value != null)
if (value != null) {
if (mustache.sanitizeUnescaped) {
return mustache.sanitizeUnescaped(value);
}
return value;
}
};

Writer.prototype.escapedValue = function escapedValue (token, context) {
@@ -619,6 +623,12 @@
// See https://github.com/janl/mustache.js/issues/244
mustache.escape = escapeHtml;

// Export the sanitizing function for unescaped values.
mustache.sanitizeUnescaped = null;
mustache.setUnescapedSanitizier = function setUnescapedSanitizier (sanitizeUnescaped) {
mustache.sanitizeUnescaped = sanitizeUnescaped;
};

// Export these mainly for testing, but also for advanced usage.
mustache.Scanner = Scanner;
mustache.Context = Context;


+ 18
- 0
test/sanitize-test.js Dosyayı Görüntüle

@@ -0,0 +1,18 @@
require('./helper');

var renderHelper = require('./render-helper');

var tests = renderHelper.getTests();

describe('Mustache.sanitizeUnescaped', function () {
beforeEach(function () {
Mustache.setUnescapedSanitizier(function(value) {
return value.toUpperCase();
});
});

it('requires template to be a string', function () {
assert.equal(Mustache.render('{{{value}}}', {value: '<b>abc</b>'}),
'<B>ABC</B>');
});
});

Yükleniyor…
İptal
Kaydet