新建
This commit is contained in:
18
public/assets/libs/art-template/loader/index.js
Normal file
18
public/assets/libs/art-template/loader/index.js
Normal file
@@ -0,0 +1,18 @@
|
||||
var template = require('art-template/dist/template');
|
||||
|
||||
module.exports = function(source) {
|
||||
this.cacheable && this.cacheable()
|
||||
|
||||
var ANONYMOUS_RE = /^function\s+anonymous/
|
||||
|
||||
template.onerror = function(e) {
|
||||
var message = 'Template Error\n\n';
|
||||
for (var name in e) {
|
||||
message += '<' + name + '>\n' + e[name] + '\n\n';
|
||||
}
|
||||
throw new SyntaxError(message)
|
||||
}
|
||||
|
||||
var render = template.compile(source, {}).toString().replace(ANONYMOUS_RE, 'function');
|
||||
return 'module.exports = require("art-template/loader/runtime")(' + render + ');';
|
||||
}
|
||||
14
public/assets/libs/art-template/loader/package.json
Normal file
14
public/assets/libs/art-template/loader/package.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"name": "t-loader",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"art-template": "^3.1.3"
|
||||
}
|
||||
}
|
||||
129
public/assets/libs/art-template/loader/runtime.js
Normal file
129
public/assets/libs/art-template/loader/runtime.js
Normal file
@@ -0,0 +1,129 @@
|
||||
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;
|
||||
Reference in New Issue
Block a user