snakeskin
Version:
Awesome JavaScript template engine.
1,047 lines (809 loc) • 21.9 kB
JavaScript
/*!
* Snakeskin
* https://github.com/SnakeskinTpl/Snakeskin
*
* Released under the MIT license
* https://github.com/SnakeskinTpl/Snakeskin/blob/master/LICENSE
*/
// EXTERNS:
/** @const */
var Snakeskin = {
/** @type {?string} */
UID: null,
/** @type {!Array} */
VERSION: [],
/** @const */
Filters: {},
/** @const */
Vars: {
/**
* @param {string} name
* @return {!Function}
*/
override: function (name) {},
/** @param {!Function} fn */
ignore: function (fn) {}
},
/** @const */
LocalVars: {},
/** @const */
cache: {},
/**
* @param {(Element|string)} src
* @param {?$$SnakeskinParams=} [opt_params]
* @param {?$$SnakeskinInfoParams=} [opt_info]
* @return {(string|boolean|null)}
*/
compile: function (src, opt_params, opt_info) {}
};
/**
* @param {string} name
* @return {string}
*/
Snakeskin.group = function (name) {};
/**
* @typedef {{
* deferInit: (?boolean|undefined),
* async: (?boolean|undefined),
* generator: (?boolean|undefined),
* notEmpty: (?boolean|undefined),
* alias: (?boolean|undefined),
* group: (Array|string|undefined),
* renderModesBlacklist: (Array|string|undefined),
* renderModesWhitelist: (Array|string|undefined),
* placement: (Array|string|undefined),
* ancestorsBlacklist: (Array|string|undefined),
* ancestorsWhitelist: (Array|string|undefined),
* with: (Array|string|undefined),
* parents: (Array|string|undefined),
* endsWith: (Array|string|undefined),
* endFor: (Array|string|undefined),
* trim: ({left: boolean, right: boolean}|boolean|undefined),
* logic: (?boolean|undefined),
* text: (?boolean|undefined),
* block: (?boolean|undefined),
* selfInclude: (?boolean|undefined),
* interpolation: (?boolean|undefined),
* selfThis: (?boolean|undefined),
* shorthands: (Object<string, (string|function(string): string)>|undefined)
* }}
*/
var $$SnakeskinAddDirectiveParams;
/** @type {?} */
var deferInit;
/** @type {?} */
var generator;
/** @type {?} */
var notEmpty;
/** @type {?} */
var alias;
/** @type {?} */
var group;
/** @type {?} */
var renderModesBlacklist;
/** @type {?} */
var renderModesWhitelist;
/** @type {?} */
var placement;
/** @type {?} */
var ancestorsBlacklist;
/** @type {?} */
var ancestorsWhitelist;
/** @type {?} */
var parents;
/** @type {?} */
var endsWith;
/** @type {?} */
var endFor;
/** @type {?} */
var trim;
/** @type {?} */
var logic;
/** @type {?} */
var text;
/** @type {?} */
var block;
/** @type {?} */
var selfInclude;
/** @type {?} */
var selfThis;
/** @type {?} */
var shorthands;
/**
* @param {string} name
* @param {$$SnakeskinAddDirectiveParams} params
* @param {function(this:$$SnakeskinParser, string, number, string, string, (boolean|number))=} opt_constr
* @param {function(this:$$SnakeskinParser, string, number, string, string, (boolean|number))=} opt_destruct
*/
Snakeskin.addDirective = function (name, params, opt_constr, opt_destruct) {};
/**
* @typedef {{
* file: (?string|undefined),
* line: (?number|undefined),
* node: (Element|undefined),
* template: (?string|undefined)
* }}
*/
var $$SnakeskinInfoParams;
/** @type {?} */
var file;
/** @type {?} */
var line;
/** @type {?} */
var node;
/** @type {?} */
var template;
/**
* @typedef {{
* cache: (?boolean|undefined),
* getCacheKey: (?boolean|undefined),
* context: (Object|undefined),
* babel: (Array|undefined),
* vars: (Object|undefined),
* onError: (?function(!Error)|undefined),
* throws: (?boolean|undefined),
* debug: (Object|undefined),
* resolveModuleSource: (?function(string, string): string|undefined),
* pack: (?boolean|undefined),
* module: (?string|undefined),
* moduleId: (?string|undefined),
* moduleName: (?string|undefined),
* useStrict: (?boolean|undefined),
* prettyPrint: (?boolean|undefined),
* literalBounds: (Array<string>|undefined),
* attrLiteralBounds: (Array<string>|undefined),
* tagFilter: (?string|undefined),
* tagNameFilter: (?string|undefined),
* attrKeyFilter: (?string|undefined),
* attrValueFilter: (?string|undefined),
* bemFilter: (?string|undefined),
* filters: (Object|undefined),
* localization: (?boolean|undefined),
* i18nFn: (?string|undefined),
* i18nFnOptions: (?string|undefined),
* language: (Object|undefined),
* words: (Object|undefined),
* ignore: (RegExp|undefined),
* tolerateWhitespaces: (?boolean|undefined),
* eol: (?string|undefined),
* doctype: (?string|undefined),
* renderAs: (?string|undefined),
* renderMode: (?string|undefined)
* }}
*/
var $$SnakeskinParams;
/** @type {?} */
var cache;
/** @type {?} */
var getCacheKey;
/** @type {?} */
var context;
/** @type {?} */
var vars;
/** @type {?} */
var onError;
/** @type {?} */
var throws;
/** @type {?} */
var debug;
/** @type {?} */
var resolveModuleSource;
/** @type {?} */
var pack;
/** @type {?} */
var moduleId;
/** @type {?} */
var moduleName;
/** @type {?} */
var useStrict;
/** @type {?} */
var prettyPrint;
/** @type {?} */
var literalBounds;
/** @type {?} */
var attrLiteralBounds;
/** @type {?} */
var tagFilter;
/** @type {?} */
var tagNameFilter;
/** @type {?} */
var attrKeyFilter;
/** @type {?} */
var attrValueFilter;
/** @type {?} */
var bemFilter;
/** @type {?} */
var filters;
/** @type {?} */
var localization;
/** @type {?} */
var i18nFn;
/** @type {?} */
var i18nFnOptions;
/** @type {?} */
var language;
/** @type {?} */
var words;
/** @type {?} */
var ignore;
/** @type {?} */
var tolerateWhitespaces;
/** @type {?} */
var eol;
/** @type {?} */
var renderAs;
/** @type {?} */
var renderMode;
/** @type {?} */
var HTMLObject;
/** @type {?} */
var StringBuffer;
/** @type {?} */
var length;
/** @type {?} */
var textContent;
/** @type {?} */
var appendChild;
/** @type {?} */
var setAttribute;
/** @type {?} */
var include;
/** @type {?} */
var toObj;
/** @type {?} */
var safe;
/** @type {?} */
var bind;
/** @type {?} */
var test;
/** @const */
Snakeskin.inlineTags = {};
/**
* @param {!Object} filters
* @param {?string=} [opt_namespace]
* @return {!Object}
*/
Snakeskin.importFilters = function (filters, opt_namespace) {};
/**
* @param {(string|!Function)} filter
* @param {Object} params
* @return {!Function}
*/
Snakeskin.setFilterParams = function (filter, params) {};
/**
* @param {(Array|Object|undefined)} obj
* @param {(
* function(?, ?, !Array, {isFirst: boolean, isLast: boolean, length: number})|
* function(?, ?, !Object, {i: number, isFirst: boolean, isLast: boolean, length: number})
* )} callback - callback function
*/
Snakeskin.forEach = function (obj, callback) {};
/**
* @param {(Object|undefined)} obj
* @param {function(?, string, !Object, {i: number, isFirst: boolean, isLast: boolean, length: number})} callback
*/
Snakeskin.forIn = function (obj, callback) {};
/**
* @param {!Array<!Function>} decorators
* @param {!Function} fn
* @return {!Function}
*/
Snakeskin.decorate = function (decorators, fn) {};
'use strict';
/**
* @param {string} str
* @return {!Array<string>}
*/
$$SnakeskinParser.prototype.getFnArgs = function (str) {};
/**
* @typedef {{
* dir: (string|undefined),
* tplName: (string|undefined),
* parentTplName: (string|undefined),
* fnName: (string|undefined)
* }}
*/
var $$SnakeskinParserDeclFnArgsParams;
/** @typedef {{decl: string, def: string, list: !Array, isCallable, scope: (string|undefined)}} */
var $$SnakeskinParserDeclFnArgsResult;
/**
* @param {string} str
* @param {?$$SnakeskinParserDeclFnArgsParams=} [opt_params]
* @return {$$SnakeskinParserDeclFnArgsResult}
*/
$$SnakeskinParser.prototype.declFnArgs = function (str, opt_params) {};
/**
* @param {string} str
* @return {string}
*/
$$SnakeskinParser.prototype.getXMLAttrsDecl = function (str) {};
/**
* @return {string}
*/
$$SnakeskinParser.prototype.getXMLAttrsDeclStart = function () {};
/**
* @param {string} str
* @return {string}
*/
$$SnakeskinParser.prototype.getXMLAttrsDeclBody = function (str) {};
/**
* @return {string}
*/
$$SnakeskinParser.prototype.getXMLAttrsDeclEnd = function () {};
/** @typedef {{attr: string, group: (string|undefined), separator: (string|undefined)}} */
var $$SnakeskinParserGetXMLAttrDeclParams;
/** @type {?} */
var attr;
/** @type {?} */
var separator;
/**
* @param {$$SnakeskinParserGetXMLAttrDeclParams} params
* @return {string}
*/
$$SnakeskinParser.prototype.getXMLAttrDecl = function (params) {};
/**
* @param {string} str
* @return {!Array<$$SnakeskinParserGetXMLAttrDeclParams>}
*/
$$SnakeskinParser.prototype.splitXMLAttrGroup = function (str) {};
/**
* @typedef {{
* throws: boolean,
* onError: (?function(!Error)|undefined),
* resolveModuleSource: (?function(string, string): string|undefined),
* pack: boolean,
* module: string,
* moduleId: (?string|undefined),
* moduleName: (?string|undefined),
* useStrict: boolean,
* literalBounds: !Array<string>,
* attrLiteralBounds: (Array<string>|undefined),
* tagFilter: (?string|undefined),
* tagNameFilter: (?string|undefined),
* attrKeyFilter: (?string|undefined),
* attrValueFilter: (?string|undefined),
* bemFilter: (?string|undefined),
* filters: (!Array),
* localization: boolean,
* i18nFn: string,
* i18nFnOptions: (?string|undefined),
* language: (Object|undefined),
* words: (Object|undefined),
* ignore: (RegExp|undefined),
* tolerateWhitespaces: boolean,
* eol: string,
* doctype: string,
* renderAs: (?string|undefined),
* renderMode: string,
* info: {file, line, node, template}
* }}
*/
var $$SnakeskinParserParams;
/** @type {?} */
var info;
/**
* @interface
* @param {string} src
* @param {$$SnakeskinParserParams} params
*/
function $$SnakeskinParser(src, params) {}
/** @type {boolean} */
$$SnakeskinParser.prototype.throws;
/** @type {(?function(!Error)|undefined)} */
$$SnakeskinParser.prototype.onError;
/** @type {boolean} */
$$SnakeskinParser.prototype.pack;
/** @type {string} */
$$SnakeskinParser.prototype.module;
/** @type {(?string|undefined)} */
$$SnakeskinParser.prototype.moduleId;
/** @type {(?string|undefined)} */
$$SnakeskinParser.prototype.moduleName;
/** @type {boolean} */
$$SnakeskinParser.prototype.useStrict;
/** @type {!Array<string>} */
$$SnakeskinParser.prototype.literalBounds;
/** @type {(Array<string>|undefined)} */
$$SnakeskinParser.prototype.attrLiteralBounds;
/** @type {string} */
$$SnakeskinParser.prototype.bemFilter;
/** @type {!Array} */
$$SnakeskinParser.prototype.filters;
/** @type {boolean} */
$$SnakeskinParser.prototype.localization;
/** @type {string} */
$$SnakeskinParser.prototype.i18nFn;
/** @type {(?string|undefined)} */
$$SnakeskinParser.prototype.i18nFnOptions;
/** @type {(Object|undefined)} */
$$SnakeskinParser.prototype.language;
/** @type {(Object|undefined)} */
$$SnakeskinParser.prototype.words;
/** @type {(RegExp|undefined)} */
$$SnakeskinParser.prototype.ignore;
/** @type {boolean} */
$$SnakeskinParser.prototype.tolerateWhitespaces;
/** @type {string} */
$$SnakeskinParser.prototype.eol;
/** @type {(?string|undefined)} */
$$SnakeskinParser.prototype.renderAs;
/** @type {string} */
$$SnakeskinParser.prototype.renderMode;
/** @type {{file, line, node, template}} */
$$SnakeskinParser.prototype.info;
/** @type {!Array<!Object>} */
$$SnakeskinParser.prototype.params;
/** @type {(boolean|number)} */
$$SnakeskinParser.prototype.needPrfx;
/** @type {!Array} */
$$SnakeskinParser.prototype.lines;
/** @type {!Array} */
$$SnakeskinParser.prototype.errors;
/** @type {boolean} */
$$SnakeskinParser.prototype.break;
/** @type {Array} */
$$SnakeskinParser.prototype.consts;
/** @type {!Object} */
$$SnakeskinParser.prototype.vars;
/** @type {!Array<string>} */
$$SnakeskinParser.prototype.scope;
/** @type {?string} */
$$SnakeskinParser.prototype.name;
/** @type {!Array<boolean>} */
$$SnakeskinParser.prototype.inline;
/** @type {boolean} */
$$SnakeskinParser.prototype.text;
/** @type {!Object<{files: Array}>} */
$$SnakeskinParser.prototype.namespaces;
/** @type {!Object<{file, renderAs}>} */
$$SnakeskinParser.prototype.templates;
/** @type {?string} */
$$SnakeskinParser.prototype.tplName;
/** @type {?string} */
$$SnakeskinParser.prototype.parentTplName;
/** @type {string} */
$$SnakeskinParser.prototype.doctype;
/** @type {?boolean} */
$$SnakeskinParser.prototype.generator;
/** @type {number} */
$$SnakeskinParser.prototype.deferReturn;
/** @type {number} */
$$SnakeskinParser.prototype.startTemplateI;
/** @type {?number} */
$$SnakeskinParser.prototype.startTemplateLine;
/** @type {string} */
$$SnakeskinParser.prototype.bemRef;
/** @type {!Array<boolean>} */
$$SnakeskinParser.prototype.selfThis;
/** @type {boolean} */
$$SnakeskinParser.prototype.canWrite;
/** @type {!Array<string>} */
$$SnakeskinParser.prototype.decorators;
/** @type {!Object} */
$$SnakeskinParser.prototype.preDefs;
/** @type {?string} */
$$SnakeskinParser.prototype.outerLink;
/** @type {boolean} */
$$SnakeskinParser.prototype.space;
/** @type {boolean} */
$$SnakeskinParser.prototype.prevSpace;
/** @type {!Array<boolean>} */
$$SnakeskinParser.prototype.strongSpace;
/** @type {boolean|number} */
$$SnakeskinParser.prototype.sysSpace;
/** @type {number} */
$$SnakeskinParser.prototype.freezeLine;
/** @type {number} */
$$SnakeskinParser.prototype.i;
/** @type {Object} */
$$SnakeskinParser.prototype.blockStructure;
/** @type {Object} */
$$SnakeskinParser.prototype.blockTable;
/**
* @typedef {{
* name: string,
* parent: ?$$SnakeskinParserStructure,
* params: !Object,
* stack: !Array,
* vars: Object,
* children: Array,
* logic: boolean,
* chain: boolean
* }}
*/
var $$SnakeskinParserStructure;
/** @type {?} */
var name;
/** @type {?} */
var parent;
/** @type {?} */
var params;
/** @type {?} */
var stack;
/** @type {?} */
var children;
/** @type {?} */
var chain;
/** @type {!Object} */
$$SnakeskinParser.prototype.structure;
/** @type {boolean} */
$$SnakeskinParser.prototype.stringResult;
/** @type {!Array} */
$$SnakeskinParser.prototype.quotContent;
/** @type {!Array} */
$$SnakeskinParser.prototype.dirContent;
/** @type {!Array} */
$$SnakeskinParser.prototype.cdataContent;
/** @type {!Object} */
$$SnakeskinParser.prototype.files;
/** @type {{exports, require, id, key, root, filename, parent, children, loaded, namespace}} */
$$SnakeskinParser.prototype.environment;
/** @type {string} */
$$SnakeskinParser.prototype.source;
/** @type {string} */
$$SnakeskinParser.prototype.result;
/**
* @param {?string=} [opt_name]
* @param {Object=} [opt_params]
* @param {Object=} [opt_vars]
* @return {!$$SnakeskinParser}
*/
$$SnakeskinParser.prototype.startDir = function (opt_name, opt_params, opt_vars) {};
/**
* @param {?string=} [opt_name]
* @param {Object=} [opt_params]
* @return {!$$SnakeskinParser}
*/
$$SnakeskinParser.prototype.startInlineDir = function (opt_name, opt_params) {};
/**
* @return {!$$SnakeskinParser}
*/
$$SnakeskinParser.prototype.endDir = function () {};
/**
* @param {string} msg
*/
$$SnakeskinParser.prototype.error = function (msg) {};
/**
* @param {string} str
* @return {string}
*/
$$SnakeskinParser.prototype.replaceDangerBlocks = function (str) {};
/**
* @param {string} str
* @return {string}
*/
$$SnakeskinParser.prototype.pasteDangerBlocks = function (str) {};
/**
* @param {string} str
* @param {?boolean=} [opt_raw]
* @return {?}
*/
$$SnakeskinParser.prototype.evalStr = function (str, opt_raw) {};
/**
* @param {string} str
* @return {?}
*/
$$SnakeskinParser.prototype.returnEvalVal = function (str) {};
/**
* @param {...string} names
* @return {!Object<string, boolean>}
*/
$$SnakeskinParser.prototype.getGroup = function (names) {};
/**
* @param {...string} names
* @return {!Array<string>}
*/
$$SnakeskinParser.prototype.getGroupList = function (names) {};
/**
* @param {string} str
* @param {(?function(string): string)=} [opt_fn]
* @return {string}
*/
$$SnakeskinParser.prototype.pasteTplVarBlocks = function (str, opt_fn) {};
/** @typedef {{unsafe: (boolean|undefined), replace: (boolean|undefined)}} */
var $$SnakeskinParserReplaceTplVarsParams;
/** @type {?} */
var unsafe;
/** @type {?} */
var replace;
/**
* @param {string} str
* @param {?$$SnakeskinParserReplaceTplVarsParams=} [opt_params]
* @param {(?function(string): string)=} [opt_wrap]
* @return {string}
*/
$$SnakeskinParser.prototype.replaceTplVars = function (str, opt_params, opt_wrap) {};
/**
* @param {string} str
* @param {?boolean=} [opt_empty]
* @return {string}
*/
$$SnakeskinParser.prototype.getFnName = function (str, opt_empty) {};
/**
* @typedef {{
* cache: (boolean|undefined),
* unsafe: (boolean|undefined),
* skipFirstWord: (boolean|undefined),
* skipValidation: (boolean|undefined)
* }}
*/
var $$SnakeskinParserOutParams;
/**
* @param {string} command
* @param {?$$SnakeskinParserOutParams=} [opt_params]
* @return {string}
*/
$$SnakeskinParser.prototype.out = function (command, opt_params) {};
/**
* @return {string}
*/
$$SnakeskinParser.prototype.$ = function () {};
/**
* @return {string}
*/
$$SnakeskinParser.prototype.$$ = function () {};
/**
* @param {?string=} [opt_str]
* @return {string}
*/
$$SnakeskinParser.prototype.wrap = function (opt_str) {};
/**
* @return {string}
*/
$$SnakeskinParser.prototype.getResultDecl = function () {};
/**
* @return {string}
*/
$$SnakeskinParser.prototype.getReturnResultDecl = function () {};
/**
* @return {boolean}
*/
$$SnakeskinParser.prototype.isSimpleOutput = function () {};
/**
* @return {boolean}
*/
$$SnakeskinParser.prototype.isAdvTest = function () {};
/** @typedef {{iface: (boolean|undefined), raw: (boolean|undefined), jsDoc: (boolean|number|undefined)}} */
var $$SnakeskinParserSaveParams;
/** @type {?} */
var iface;
/** @type {?} */
var raw;
/** @type {?} */
var jsDoc;
/**
* @param {string=} str
* @param {?$$SnakeskinParserSaveParams=} [opt_params]
* @return {(boolean|string)}
*/
$$SnakeskinParser.prototype.save = function (str, opt_params) {};
/**
* @param {string=} str
* @param {?$$SnakeskinParserSaveParams=} [opt_params]
* @return {(boolean|string)}
*/
$$SnakeskinParser.prototype.append = function (str, opt_params) {};
/**
* @param {string} tag
* @param {?string=} [opt_attrs]
* @param {?boolean=} [opt_inline]
* @return {string}
*/
$$SnakeskinParser.prototype.getXMLTagDecl = function (tag, opt_attrs, opt_inline) {};
/**
* @param {string} tag
* @return {string}
*/
$$SnakeskinParser.prototype.getXMLTagDeclStart = function (tag) {};
/**
* @param {?boolean=} [opt_inline]
* @return {string}
*/
$$SnakeskinParser.prototype.getXMLTagDeclEnd = function (opt_inline) {};
/**
* @param {?boolean=} [opt_inline]
* @return {string}
*/
$$SnakeskinParser.prototype.getEndXMLTagDecl = function (opt_inline) {};
/**
* @typedef {{
* tag: string,
* id: string,
* classes: !Array<string>,
* pseudo: !Array<string>,
* inline: boolean,
* inlineMap: (boolean|string)
* }}
*/
var $$SnakeskinParserGetXMLTagDescResult;
/** @type {?} */
var tag;
/** @type {?} */
var id;
/** @type {?} */
var classes;
/** @type {?} */
var pseudo;
/** @type {?} */
var inline;
/** @type {?} */
var inlineMap;
/**
* @param {string} str
* @return {$$SnakeskinParserGetXMLTagDescResult}
*/
$$SnakeskinParser.prototype.getXMLTagDesc = function (str) {};
/**
* @param {string} str
* @return {!Array<string>}
*/
$$SnakeskinParser.prototype.getTokens = function (str) {};
/**
* @return {?$$SnakeskinParserStructure}
*/
$$SnakeskinParser.prototype.getNonLogicParent = function () {};
/**
* @return {boolean}
*/
$$SnakeskinParser.prototype.isLogic = function () {};
/**
* @param {(string|!Object<string, boolean>|!Array<string>)} name
* @param {?boolean=} [opt_return]
* @return {(boolean|string|!Object)}
*/
$$SnakeskinParser.prototype.has = function (name, opt_return) {};
/**
* @param {(string|!Object<string, boolean>|!Array<string>)} name
* @param {?boolean=} [opt_return]
* @return {(boolean|string|!Object)}
*/
$$SnakeskinParser.prototype.hasParent = function (name, opt_return) {};
/**
* @param {(string|!Object<string, boolean>|!Array<string>)} name
* @param {?boolean=} [opt_return]
* @return {(boolean|string|!Object)}
*/
$$SnakeskinParser.prototype.hasBlock = function (name, opt_return) {};
/**
* @param {(string|!Object<string, boolean>|!Array<string>)} name
* @param {?boolean=} [opt_return]
* @return {(boolean|string|!Object)}
*/
$$SnakeskinParser.prototype.hasParentBlock = function (name, opt_return) {};
/**
* @return {($$SnakeskinParserStructure|boolean)}
*/
$$SnakeskinParser.prototype.hasParentMicroTemplate = function () {};
/**
* @return {({asyncParent: (boolean|string), block: boolean, target: $$SnakeskinParserStructure}|boolean)}
*/
$$SnakeskinParser.prototype.hasParentFunction = function () {};
/** @typedef {{end: (boolean|undefined), def: (string|undefined), sys: (boolean|undefined)}} */
var $$SnakeskinParserDeclVarsParams;
/** @typedef {{fn: (boolean|undefined), sys: (boolean|undefined)}} */
var $$SnakeskinParserDeclVarParams;
/** @type {?} */
var end;
/** @type {?} */
var def;
/** @type {?} */
var sys;
/** @type {?} */
var fn;
/**
* @param {string} name
* @return {string}
*/
$$SnakeskinParser.prototype.getVar = function (name) {};
/**
* @param {string} name
* @param {?$$SnakeskinParserDeclVarParams=} [opt_params]
* @return {string}
*/
$$SnakeskinParser.prototype.declVar = function (name, opt_params) {};
/**
* @param {string} str
* @param {?$$SnakeskinParserDeclVarsParams=} [opt_params]
* @return {string}
*/
$$SnakeskinParser.prototype.declVars = function (str, opt_params) {};