///<reference path="./IMacroFilter.ts" />
///<reference path="../SourceHelper.ts" />
var econda;
(function (econda) {
var tagmanager;
(function (tagmanager) {
var macro;
(function (macro) {
var filter;
(function (filter) {
var SourceHelper = econda.tagmanager.macro.SourceHelper;
/**
* StringFilter class applies filter rules to macros of type "string"
* @class econda.tagmanager.macro.filter.StringFilter
*/
var HtmlElementFilter = (function () {
function HtmlElementFilter() {
}
HtmlElementFilter.prototype.getFilteredValue = function (macroDefinition, element) {
var propertyName;
var s = SourceHelper.parse(macroDefinition.patternSourceName);
if (s.property !== null) {
propertyName = s.property;
}
else {
propertyName = this._getDefaultPropertyNameForElement(element);
}
return this._readPropertyValue(element, propertyName);
};
HtmlElementFilter.prototype._readPropertyValue = function (el, propertyName) {
switch (propertyName.toLocaleLowerCase()) {
case 'text':
return el.innerText || el.textContent;
case 'html':
return el.innerHTML;
case 'id':
return el.id;
case 'value':
return el.value;
default:
return el.getAttribute(propertyName);
}
};
HtmlElementFilter.prototype._getDefaultPropertyNameForElement = function (el) {
var tagName = el.tagName;
var property;
switch (tagName.toLocaleLowerCase()) {
case 'input':
property = 'value';
break;
default:
property = 'text';
}
return property;
};
return HtmlElementFilter;
}());
filter.HtmlElementFilter = HtmlElementFilter;
})(filter = macro.filter || (macro.filter = {}));
})(macro = tagmanager.macro || (tagmanager.macro = {}));
})(tagmanager = econda.tagmanager || (econda.tagmanager = {}));
})(econda || (econda = {}));