///<reference path="./IMacroFilter.ts" />
///<reference path="./StringFilter.ts" />
///<reference path="./HtmlElementFilter.ts" />
var econda;
(function (econda) {
var tagmanager;
(function (tagmanager) {
var macro;
(function (macro) {
var filter;
(function (filter_1) {
/**
* Filters a value. Will use specialized filter implementations based on value type.
* @class econda.tagmanager.macro.filter.Filter
*/
var Filter = (function () {
function Filter() {
this.initFilters();
}
Filter.prototype.initFilters = function () {
this.filters = {};
this.filters['string'] = new econda.tagmanager.macro.filter.StringFilter();
this.filters['html_element'] = new econda.tagmanager.macro.filter.HtmlElementFilter();
};
Filter.prototype.getFilteredValue = function (macroDefinition, valueToFilter) {
if (valueToFilter === undefined) {
return undefined;
}
// process special objects
var tmpValue = valueToFilter, filter = null;
if (valueToFilter instanceof HTMLElement) {
filter = this.getFilterByType('html_element');
}
if (filter !== null) {
tmpValue = filter.getFilteredValue(macroDefinition, valueToFilter);
}
// proces string filter and regexp
var filter = this.getFilterByType('string');
return filter.getFilteredValue(macroDefinition, tmpValue);
};
Filter.prototype.getFilterByType = function (typeName) {
var ret = null;
if (typeof this.filters[typeName] != 'undefined') {
ret = this.filters[typeName];
}
return ret;
};
return Filter;
}());
filter_1.Filter = Filter;
})(filter = macro.filter || (macro.filter = {}));
})(macro = tagmanager.macro || (tagmanager.macro = {}));
})(tagmanager = econda.tagmanager || (econda.tagmanager = {}));
})(econda || (econda = {}));