You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.2 KiB
70 lines
1.2 KiB
var toString = function (value, type) {
|
|
|
|
if (typeof value !== 'string') {
|
|
|
|
type = typeof value;
|
|
if (type === 'number') {
|
|
value += '';
|
|
} else if (type === 'function') {
|
|
value = toString(value.call(value));
|
|
} else {
|
|
value = '';
|
|
}
|
|
}
|
|
|
|
return value;
|
|
|
|
};
|
|
|
|
|
|
var escapeMap = {
|
|
"<": "<",
|
|
">": ">",
|
|
'"': """,
|
|
"'": "'",
|
|
"&": "&"
|
|
};
|
|
|
|
|
|
var escapeFn = function (s) {
|
|
return escapeMap[s];
|
|
};
|
|
|
|
var escapeHTML = function (content) {
|
|
return toString(content)
|
|
.replace(/&(?![\w#]+;)|[<>"']/g, escapeFn);
|
|
};
|
|
|
|
|
|
var isArray = Array.isArray || function (obj) {
|
|
return ({}).toString.call(obj) === '[object Array]';
|
|
};
|
|
|
|
|
|
var each = function (data, callback) {
|
|
var i, len;
|
|
if (isArray(data)) {
|
|
for (i = 0, len = data.length; i < len; i++) {
|
|
callback.call(data, data[i], i, data);
|
|
}
|
|
} else {
|
|
for (i in data) {
|
|
callback.call(data, data[i], i);
|
|
}
|
|
}
|
|
};
|
|
|
|
|
|
var utils = template.utils = {
|
|
|
|
$helpers: {},
|
|
|
|
$include: renderFile,
|
|
|
|
$string: toString,
|
|
|
|
$escape: escapeHTML,
|
|
|
|
$each: each
|
|
|
|
}; |