"use strict";
var definitions = require("./../../definitions");
var renameDefinitionInText_1 = require("./renameDefinitionInText");
var StringHashSet_1 = require("./../StringHashSet");
var ModuleBodyRenamer = (function () {
function ModuleBodyRenamer(renameInfo, moduleDef) {
this.renameInfo = renameInfo;
this.moduleDef = moduleDef;
this.lookedAtObjectsByName = new StringHashSet_1.StringHashSet();
}
ModuleBodyRenamer.renameInModule = function (renameInfo, moduleDef) {
new ModuleBodyRenamer(renameInfo, moduleDef).rename();
};
ModuleBodyRenamer.prototype.rename = function () {
this.iterateObj(this.moduleDef);
};
ModuleBodyRenamer.prototype.iterateObj = function (obj) {
var def = obj;
if (obj instanceof Array) {
this.handleArray(obj);
}
else if (def != null && typeof def === "object" && typeof def.__uniqueID === "number" && !this.lookedAtObjectsByName.contains(def.__uniqueID.toString())) {
this.handleObject(def);
}
};
ModuleBodyRenamer.prototype.handleArray = function (obj) {
var _this = this;
obj.forEach(function (item) { return _this.iterateObj(item); });
};
ModuleBodyRenamer.prototype.handleObject = function (def) {
var _this = this;
this.lookedAtObjectsByName.add(def.__uniqueID.toString());
Object.keys(def).forEach(function (key) {
var isNamespacesProperty = (def instanceof definitions.NamespaceDefinition || def instanceof definitions.FileDefinition) && key === "namespaces";
if (!isNamespacesProperty) {
_this.iterateObj(def[key]);
}
});
if (def instanceof definitions.TypeDefinition || def instanceof definitions.TypeNodeDefinition || def instanceof definitions.ExpressionDefinition) {
def.text = renameDefinitionInText_1.renameDefinitionInText(def.text, this.renameInfo.fullNameFrom, this.renameInfo.fullNameTo);
}
};
return ModuleBodyRenamer;
}());
exports.ModuleBodyRenamer = ModuleBodyRenamer;
//# sourceMappingURL=ModuleBodyRenamer.js.map
|