///<reference path="./IMacroFilter.ts" />
///<reference path="../../helper/RegExpValue.ts" />
var econda;
(function (econda) {
    var tagmanager;
    (function (tagmanager) {
        var macro;
        (function (macro) {
            var filter;
            (function (filter) {
                var RegExpValue = econda.tagmanager.helper.RegExpValue;
                /**
                 * StringFilter class applies filter rules to macros of type "string"
                 * @class econda.tagmanager.macro.filter.StringFilter
                 */
                var StringFilter = (function () {
                    function StringFilter() {
                    }
                    StringFilter.prototype.getFilteredValue = function (macroDefinition, valueToFilter) {
                        var regExpConfig = new RegExpValue(macroDefinition.regexp || null);
                        if (regExpConfig.isMatchAlways()) {
                            return valueToFilter;
                        }
                        else {
                            var regex = regExpConfig.toRegExp();
                            var ret;
                            var matches = regex.exec(valueToFilter);
                            if (matches === null) {
                                // regex did not match
                                return null;
                            }
                            switch (matches.length) {
                                case 1:
                                    // regex did match, return match
                                    ret = matches[0];
                                    break;
                                default:
                                    // regex generated submatches, return first one
                                    ret = matches[1];
                                    break;
                            }
                            return ret;
                        }
                    };
                    return StringFilter;
                }());
                filter.StringFilter = StringFilter;
            })(filter = macro.filter || (macro.filter = {}));
        })(macro = tagmanager.macro || (tagmanager.macro = {}));
    })(tagmanager = econda.tagmanager || (econda.tagmanager = {}));
})(econda || (econda = {}));