///<reference path="./IMacroReader.ts" />
///<reference path="./IMacroReaderResult.ts" />
///<reference path="../IMacroDefinition.ts" />
///<reference path="../SourceHelper.ts" />
///<reference path="../../../util/ObjectUtils.ts" />
var econda;
(function (econda) {
    var tagmanager;
    (function (tagmanager) {
        var macro;
        (function (macro) {
            var reader;
            (function (reader) {
                var SourceHelper = econda.tagmanager.macro.SourceHelper;
                var ObjectUtils = econda.util.ObjectUtils;
                /**
                 * Read data from data layer. This class if for internal use only.
                 * @class econda.tagmanager.macro.reader.DataLayerReader
                 * @private
                 */
                var DataLayerReader = (function () {
                    function DataLayerReader(cfg) {
                        /**
                        * Reference to data layer
                        * @property {Object} dataLayer
                        * @private
                        */
                        this.dataLayer = null;
                        this.dataLayer = cfg.dataLayer;
                    }
                    /**
                     * Read value from data layer.
                     * @param {Object} macroDefinition
                     */
                    DataLayerReader.prototype.readValue = function (macroDefinition) {
                        var ret;
                        var source = SourceHelper.parse(macroDefinition.patternSourceName);
                        var value = ObjectUtils.getNestedProperty(this.dataLayer, source.element);
                        if (typeof value != 'undefined') {
                            ret = {
                                value: value,
                                success: true
                            };
                        }
                        else {
                            ret = {
                                value: undefined,
                                success: false
                            };
                        }
                        return ret;
                    };
                    DataLayerReader.prototype.readValueWithEvent = function (macroDefinition, eventData) {
                        return {
                            value: undefined,
                            success: false
                        };
                    };
                    return DataLayerReader;
                }());
                reader.DataLayerReader = DataLayerReader;
            })(reader = macro.reader || (macro.reader = {}));
        })(macro = tagmanager.macro || (tagmanager.macro = {}));
    })(tagmanager = econda.tagmanager || (econda.tagmanager = {}));
})(econda || (econda = {}));