| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 | function template(content) {    return compile(content);};var String = this.String;function toString(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 = {    "<": "<",    ">": ">",    '"': """,    "'": "'",    "&": "&"};function escapeFn(s) {    return escapeMap[s];}function escapeHTML(content) {    return toString(content)        .replace(/&(?![\w#]+;)|[<>"']/g, escapeFn);};var isArray = Array.isArray || function (obj) {    return ({}).toString.call(obj) === '[object Array]';};function each(data, callback) {    if (isArray(data)) {        for (var 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: function () {        throw new Error('art-template/loader: not support `include`.');    },    $string: toString,    $escape: escapeHTML,    $each: each};var helpers = template.helpers = utils.$helpers;function compile(fn) {    var render = function (data) {        try {            return new fn(data) + '';        } catch (e) {            return showDebugInfo(e)();        }    };    render.prototype = fn.prototype = utils;    render.toString = function () {        return fn + '';    };    return render;};function showDebugInfo(e) {    var type = "{Template Error}";    var message = e.stack || '';    if (message) {        // 利用报错堆栈信息        message = message.split('\n').slice(0, 2).join('\n');    } else {        // 调试版本,直接给出模板语句行        for (var name in e) {            message += "<" + name + ">\n" + e[name] + "\n\n";        }    }    return function () {        if (typeof console === "object") {            console.error(type + "\n\n" + message);        }        return type;    };};template.helper = function (name, helper) {    helpers[name] = helper;};module.exports = template;
 |