UNPKG

atpl

Version:

A complete and fast template engine fully compatible with twig and similar to jinja with zero dependencies.

351 lines (350 loc) 11.3 kB
"use strict"; var RuntimeContext_1 = require('../runtime/RuntimeContext'); var RuntimeUtils = require('../runtime/RuntimeUtils'); /** * */ var DefaultFilters = (function () { function DefaultFilters() { } /** * Filter that obtains the absolute value of a number. * * @param value Value * * @see http://twig.sensiolabs.org/doc/filters/abs.html */ DefaultFilters.abs = function (value) { return Math.abs(value); }; /** * * @see http://twig.sensiolabs.org/doc/filters/batch.html */ DefaultFilters.batch = function (_items, groupCount, fill) { if (fill === void 0) { fill = undefined; } var items = RuntimeUtils.ensureArray(_items); var groupList = []; if (fill !== undefined) groupCount = Math.min(groupCount, items.length); groupCount = RuntimeUtils.ensureNumber(groupCount); for (var n = 0; n < items.length; n += groupCount) { var slice = items.slice(n, n + groupCount); if (fill !== undefined) while (slice.length < groupCount) slice.push(fill); groupList.push(slice); } return groupList; }; /** * * @see http://twig.sensiolabs.org/doc/filters/capitalize.html */ DefaultFilters.capitalize = function (value) { return RuntimeUtils.capitalize(value); }; /** * * @see http://twig.sensiolabs.org/doc/filters/convert_encoding.html */ DefaultFilters.convert_encoding = function (value, from, to) { throw new Error("Not implemented [no use on javascript that works with unicode]"); }; /** * * @see http://twig.sensiolabs.org/doc/filters/date.html */ DefaultFilters.date = function (value, format, timezone) { return RuntimeUtils.date(format, value, timezone); }; /** * * @see http://twig.sensiolabs.org/doc/filters/date_modify.html */ DefaultFilters.date_modify = function (value, modifier) { return RuntimeUtils.strtotime(modifier, value); }; /** * * @see http://twig.sensiolabs.org/doc/filters/default.html */ DefaultFilters.$default = function (value, default_value) { return RuntimeUtils.$default(value, default_value); }; /** * * @see http://twig.sensiolabs.org/doc/filters/escape.html */ DefaultFilters.e = function (value, strategy) { var runtimeContext = this; runtimeContext.currentAutoescape = strategy; return value; }; /** * * @see http://twig.sensiolabs.org/doc/filters/escape.html */ DefaultFilters.escape = function (value, strategy) { if (strategy === void 0) { strategy = true; } var runtimeContext = this; runtimeContext.currentAutoescape = strategy; return value; }; /** * * @see http://twig.sensiolabs.org/doc/filters/format.html */ DefaultFilters.format = function (format) { var parameters = []; for (var _i = 1; _i < arguments.length; _i++) { parameters[_i - 1] = arguments[_i]; } return RuntimeUtils.sprintf.apply(null, arguments); }; /** * * @see http://twig.sensiolabs.org/doc/filters/join.html */ DefaultFilters.join = function (value, separator) { if (separator === void 0) { separator = ''; } if (!RuntimeUtils.defined(value)) return ''; if (value instanceof Array) { return value.join(separator); } else { return value; } }; /** * * @see http://twig.sensiolabs.org/doc/filters/json_encode.html */ DefaultFilters.json_encode = function (value) { //var runtimeContext: RuntimeContext.RuntimeContext = this; //runtimeContext.currentAutoescape = false; return RuntimeUtils.json_encode_circular(value); }; /** * * @see http://twig.sensiolabs.org/doc/filters/keys.html */ DefaultFilters.keys = function (value) { if (!RuntimeUtils.defined(value)) return []; if (RuntimeUtils.isString(value)) return []; var keys = []; for (var key in value) keys.push(key); return keys; }; /** * * @see http://twig.sensiolabs.org/doc/filters/length.html */ DefaultFilters.$length = function (value) { if (!RuntimeUtils.defined(value)) return 0; return value.length; }; /** * * @see http://twig.sensiolabs.org/doc/filters/first.html */ DefaultFilters.first = function (value) { if (!RuntimeUtils.defined(value)) return undefined; if (RuntimeUtils.isArray(value)) return value[0]; if (RuntimeUtils.isString(value)) return value.substr(0, 1); if (RuntimeUtils.isObject(value)) for (var k in value) return value[k]; return undefined; }; /** * * @see http://twig.sensiolabs.org/doc/filters/last.html */ DefaultFilters.last = function (value) { if (!RuntimeUtils.defined(value)) return undefined; if (RuntimeUtils.isArray(value)) return value[value.length - 1]; if (RuntimeUtils.isString(value)) return value.substr(-1, 1); if (RuntimeUtils.isObject(value)) { var last; for (var k in value) last = value[k]; return last; } return undefined; }; /** * * @see http://twig.sensiolabs.org/doc/filters/lower.html */ DefaultFilters.lower = function (value) { return String(value).toLowerCase(); }; /** * * @see http://twig.sensiolabs.org/doc/filters/merge.html */ DefaultFilters.merge = function (value, add) { if (RuntimeUtils.isArray(value)) { return value.concat(add); } else { var object = {}; for (var key in value) object[key] = value[key]; for (var key in add) object[key] = add[key]; return object; } }; /** * * @see http://twig.sensiolabs.org/doc/filters/nl2br.html */ DefaultFilters.nl2br = function (value) { var runtimeContext = this; value = runtimeContext.getEscapedText(value); runtimeContext.currentAutoescape = false; return String(value).replace(/\n/g, '<br />\n'); }; /** * * @see http://twig.sensiolabs.org/doc/filters/number_format.html */ DefaultFilters.number_format = function (value, decimal, decimal_point, decimal_sep) { if (decimal === void 0) { decimal = 0; } if (decimal_point === void 0) { decimal_point = '.'; } if (decimal_sep === void 0) { decimal_sep = ','; } return RuntimeUtils.number_format(value, decimal, decimal_point, decimal_sep); }; /** * * @see http://twig.sensiolabs.org/doc/filters/raw.html */ DefaultFilters.raw = function (value) { var runtimeContext = this; runtimeContext.currentAutoescape = false; return value; }; /** * * @see http://twig.sensiolabs.org/doc/filters/replace.html */ DefaultFilters.replace = function (value, replace_pairs) { return String(value).replace(new RegExp("(" + Object.keys(replace_pairs).map(function (item) { return RuntimeUtils.quoteRegExp(item); }).join('|') + ")", "g"), function (match) { return replace_pairs[match]; }); }; /** * * @see http://twig.sensiolabs.org/doc/filters/reverse.html */ DefaultFilters.reverse = function (value) { if (!RuntimeUtils.defined(value)) return value; if (RuntimeUtils.isArray(value)) return value.reverse(); if (RuntimeUtils.isNumber(value)) value = value.toString(); if (RuntimeUtils.isString(value)) { var ret = ''; for (var n = 0; n < value.length; n++) ret += value.charAt(value.length - n - 1); return ret; } //if (typeof value == 'string') throw (new Error("Not implemented filter [reverse] with value type [" + (typeof value) + ']')); }; /** * * @see http://twig.sensiolabs.org/doc/filters/slice.html */ DefaultFilters.slice = function (value, start, length, preserve_keys) { if (RuntimeUtils.isArray(value)) return value.slice(start, start + length); if (RuntimeUtils.isNumber(value)) value = value.toString(); if (RuntimeUtils.isString(value)) return value.substr(start, length); return value; }; /** * * @see http://twig.sensiolabs.org/doc/filters/sort.html */ DefaultFilters.sort = function (value) { if (value instanceof Array) return value.sort(); return value; }; /** * * @see http://twig.sensiolabs.org/doc/filters/split.html */ DefaultFilters.split = function (_value, delimiter, limit) { var value = RuntimeUtils.toString(_value); return RuntimeUtils.split(value, delimiter, limit); }; /** * * @see http://twig.sensiolabs.org/doc/filters/striptags.html */ DefaultFilters.striptags = function (value) { return RuntimeUtils.strip_tags(value); }; /** * * @see http://twig.sensiolabs.org/doc/filters/title.html */ DefaultFilters.title = function (value) { return RuntimeUtils.title(value); }; /** * * @see http://twig.sensiolabs.org/doc/filters/trim.html */ DefaultFilters.trim = function (value, characters) { return RuntimeUtils.trim(value, characters); }; /** * * @see http://twig.sensiolabs.org/doc/filters/upper.html */ DefaultFilters.upper = function (value) { return String(value).toUpperCase(); }; /** * * @see http://twig.sensiolabs.org/doc/filters/url_encode.html */ DefaultFilters.url_encode = function (value) { return RuntimeUtils.escapeUrlString(String(value)).replace('%20', '+'); }; /** * * @see http://twig.sensiolabs.org/doc/filters/spaceless.html */ DefaultFilters.spaceless = function (value) { return RuntimeUtils.toString(value).replace(/>\s+</g, '><'); }; /** * @see http://twig.sensiolabs.org/doc/extensions/i18n.html */ DefaultFilters.trans = function (value) { var runtimeContext = this; return runtimeContext.trans2(RuntimeContext_1.RuntimeContext.normalizeTrans(value), "", 1); }; return DefaultFilters; }()); exports.DefaultFilters = DefaultFilters;