/// <reference path="./IParsedSourceDefinition.ts" />
/// <reference path="../../util/StringUtils.ts" />
var econda;
(function (econda) {
    var tagmanager;
    (function (tagmanager) {
        var macro;
        (function (macro) {
            var StringUtils = econda.util.StringUtils;
            /**
             * Class to parse source definitions found in macros and constraints.
             * @class econda.tagmanager.macro.SourceHelper
             */
            var SourceHelper = (function () {
                function SourceHelper() {
                }
                /**
                 * Do parse source definition
                 * @static
                 */
                SourceHelper.parse = function (sourceDefinition) {
                    if (sourceDefinition === null) {
                        return {
                            element: null,
                            property: null
                        };
                    }
                    var source = StringUtils.trim(sourceDefinition);
                    if (source.indexOf('(') === 0) {
                        // (element query).property
                        var matches = source.match(/\(\s*([^)\s]{1,})\s*\)(\s*\.?\s*(.*))\s*$/);
                        return {
                            element: matches[1],
                            property: matches[3] || null
                        };
                    }
                    else {
                        // element query
                        return {
                            element: source,
                            property: null
                        };
                    }
                };
                return SourceHelper;
            }());
            macro.SourceHelper = SourceHelper;
        })(macro = tagmanager.macro || (tagmanager.macro = {}));
    })(tagmanager = econda.tagmanager || (econda.tagmanager = {}));
})(econda || (econda = {}));