var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; /// <reference path="../../base/BaseClass.ts" /> /// <reference path="../macro/output/IOutputFormatter.ts" /> /// <reference path="../macro/output/BooleanFormatter.ts" /> /// <reference path="../macro/output/RawFormatter.ts" /> /// <reference path="../macro/output/UrlFormatter.ts" /> /// <reference path="../macro/output/HtmlFormatter.ts" /> /// <reference path="../macro/output/JsonFormatter.ts" /> /// <reference path="../macro/output/JsFormatter.ts" /> var econda; (function (econda) { var tagmanager; (function (tagmanager) { var tag; (function (tag) { /** * Replaces macro values in tags * @class econda.tagmanager.tag.MacroProcessor */ var MacroProcessor = (function (_super) { __extends(MacroProcessor, _super); function MacroProcessor(cfg) { _super.call(this); this._containerVarName = null; this._formatters = {}; if (cfg instanceof MacroProcessor) { return this; } this.initConfig(cfg); this.initOutputFormatters(); } //noinspection JSUnusedGlobalSymbols MacroProcessor.prototype.setContainerVarName = function (varName) { this._containerVarName = varName; return this; }; //noinspection JSUnusedGlobalSymbols MacroProcessor.prototype.getContainerVarName = function () { return this._containerVarName; }; /** * Accepts tag source code and replaces placeholders and returns modifed code * {% macroname %} * {% macroname | escaper %} */ MacroProcessor.prototype.replaceMacroPlaceholders = function (tagSourceCode, currentEvent) { var _this = this; if (currentEvent === void 0) { currentEvent = null; } return String(tagSourceCode).replace(MacroProcessor.MACRO_PLACEHOLDER_REGEX, function (placeholder, macroName, formatterName, formatterParamsString) { var macroValue = window[_this._containerVarName].getValueByName(macroName, currentEvent); formatterName = String((typeof formatterName !== 'undefined') ? formatterName : 'raw').toLowerCase(); if (typeof _this._formatters[formatterName] === 'undefined') { formatterName = 'raw'; } var formatterParams = MacroProcessor.parseFormatterParamsString(formatterParamsString); return _this._formatters[formatterName].format(macroName, macroValue, formatterParams); }); }; MacroProcessor.parseFormatterParamsString = function (paramsString) { if (typeof paramsString != 'string') { return []; } var params = paramsString.split(','); for (var i = 0; i < params.length; i++) { params[i] = String(params[i]).replace(/^[\s"']+|[\s"']+$/g, ''); } return params; }; MacroProcessor.prototype.initOutputFormatters = function () { this._formatters['boolean'] = new econda.tagmanager.macro.output.BooleanFormatter(); this._formatters['html'] = new econda.tagmanager.macro.output.HtmlFormatter(); this._formatters['js'] = new econda.tagmanager.macro.output.JsFormatter({ containerVarName: this._containerVarName }); this._formatters['json'] = new econda.tagmanager.macro.output.JsonFormatter(); this._formatters['raw'] = new econda.tagmanager.macro.output.RawFormatter(); this._formatters['url'] = new econda.tagmanager.macro.output.UrlFormatter(); }; MacroProcessor.MACRO_PLACEHOLDER_REGEX = /(?:\{%|###)\s*(\w+)(?:\s*(?:\||:)\s*(\w+)(?:\((.*)\))?)?\s*(?:%\}|###)/g; return MacroProcessor; }(econda.base.BaseClass)); tag.MacroProcessor = MacroProcessor; })(tag = tagmanager.tag || (tagmanager.tag = {})); })(tagmanager = econda.tagmanager || (econda.tagmanager = {})); })(econda || (econda = {}));