///<reference path="./IMacroReader.ts" />
///<reference path="./IMacroReaderResult.ts" />
///<reference path="../IMacroDefinition.ts" />
var econda;
(function (econda) {
var tagmanager;
(function (tagmanager) {
var macro;
(function (macro) {
var reader;
(function (reader) {
/**
* Read data from current url of current document. This class if for internal use only.
* @class econda.tagmanager.macro.reader.UriReader
* @private
*/
var UrlReader = (function () {
function UrlReader() {
this._url = null;
this._cachedParams = null;
}
UrlReader.prototype.setUrl = function (url) {
this._url = url;
return this;
};
UrlReader.prototype.getUrl = function () {
if (this._url === null) {
this._url = window.document.URL;
}
return this._url;
};
UrlReader.prototype.readValue = function (macroDefinition) {
var ret;
try {
var value = macroDefinition.patternSourceName
? this._getParam(macroDefinition.patternSourceName)
: this.getUrl();
ret = {
value: value,
success: (value !== undefined)
};
}
catch (e) {
ret = {
value: undefined,
success: false,
error: e
};
}
return ret;
};
UrlReader.prototype.readValueWithEvent = function (macroDefinition, eventData) {
return {
value: undefined,
success: false
};
};
UrlReader.prototype._getParam = function (name) {
if (this._cachedParams === null) {
this._updateCachedParams();
}
if (typeof this._cachedParams[name] === 'undefined') {
return undefined;
}
return this._cachedParams[name];
};
UrlReader.prototype._updateCachedParams = function () {
this._cachedParams = {};
var url = this.getUrl();
var search = url.substr(url.indexOf('?') + 1);
var tokens = search.split('&');
for (var n = 0; n < tokens.length; n++) {
var pair = tokens[n].split(/^([^=]{1,})=(.*)$/);
if (pair.length >= 3) {
this._cachedParams[decodeURIComponent(pair[1])] = decodeURIComponent(pair[2]);
}
else if (pair.length === 1) {
this._cachedParams[decodeURIComponent(pair[0])] = '';
}
}
};
return UrlReader;
}());
reader.UrlReader = UrlReader;
})(reader = macro.reader || (macro.reader = {}));
})(macro = tagmanager.macro || (tagmanager.macro = {}));
})(tagmanager = econda.tagmanager || (econda.tagmanager = {}));
})(econda || (econda = {}));