Commit 732a687a authored by Evgeny Vereshchagin's avatar Evgeny Vereshchagin

Escape input to prevent funny effects

Inspired from lodash
parent 28b669e4
...@@ -2,6 +2,28 @@ ...@@ -2,6 +2,28 @@
(function (window) { (function (window) {
'use strict'; 'use strict';
var htmlEscapes = {
'&': '&',
'<': '&lt;',
'>': '&gt;',
'"': '&quot;',
'\'': '&#x27;',
'`': '&#x60;'
};
var escapeHtmlChar = function (chr) {
return htmlEscapes[chr];
};
var reUnescapedHtml = /[&<>"'`]/g,
reHasUnescapedHtml = new RegExp(reUnescapedHtml.source);
var escape = function (string) {
return (string && reHasUnescapedHtml.test(string))
? string.replace(reUnescapedHtml, escapeHtmlChar)
: string;
};
/** /**
* Sets up defaults for all the Template methods such as a default template * Sets up defaults for all the Template methods such as a default template
* *
...@@ -50,7 +72,7 @@ ...@@ -50,7 +72,7 @@
} }
template = template.replace('{{id}}', data[i].id); template = template.replace('{{id}}', data[i].id);
template = template.replace('{{title}}', data[i].title); template = template.replace('{{title}}', escape(data[i].title));
template = template.replace('{{completed}}', completed); template = template.replace('{{completed}}', completed);
template = template.replace('{{checked}}', checked); template = template.replace('{{checked}}', checked);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment