esshorten2
Advanced tools
Comparing version 1.1.5 to 1.1.6
@@ -94,4 +94,25 @@ /*! | ||
/** | ||
* if name already defined in upper scope, return true | ||
* so you should regenarate a new name | ||
*/ | ||
function checkName(scope, name) { | ||
var tmp = scope.upper; | ||
var idmap; | ||
var flag = false; | ||
while(tmp) { | ||
idmap = tmp.__id_map__; | ||
if (idmap[name]) { | ||
flag = true; | ||
break; | ||
} | ||
tmp = tmp.upper; | ||
} | ||
return flag; | ||
} | ||
function run(scope, options) { | ||
var i, iz, j, jz, variable, name, def, ref, generator; | ||
var varMap = {}; | ||
var idMap = {}; | ||
@@ -127,4 +148,6 @@ generator = new NameGenerator(scope, options); | ||
} | ||
name = generator.generateName(name); | ||
while(checkName(scope, name)) { | ||
name = generator.generateName(name); | ||
} | ||
@@ -136,2 +159,4 @@ for (j = 0, jz = variable.identifiers.length; j < jz; ++j) { | ||
} | ||
varMap[variable.name] = name; | ||
idMap[name] = variable.name; | ||
// change definition's name | ||
@@ -149,13 +174,24 @@ def.name = name; | ||
} | ||
} | ||
scope.__var_map__ = varMap; | ||
scope.__id_map__ = idMap; | ||
var scopeFrom, idMap; | ||
if (scope.type === 'global') { | ||
for (j = 0, jz = scope.references.length; j < jz; ++j) { | ||
ref = scope.references[j]; | ||
if (options.cmd && options.cmd.globals.indexOf(ref.identifier.name) >= 0) { | ||
continue; | ||
} | ||
// change reference's name | ||
ref.identifier.name = name; | ||
} | ||
for (j = 0, jz = scope.references.length; j < jz; ++j) { | ||
ref = scope.references[j]; | ||
scopeFrom = ref.from.upper || ref.from; | ||
while (scopeFrom) { | ||
varMap = scopeFrom.__var_map__; | ||
/* | ||
if (options.cmd && options.cmd.globals.indexOf(ref.identifier.name) >= 0) { | ||
continue; | ||
} | ||
*/ | ||
if (varMap[ref.identifier.name]) { | ||
// change reference's name | ||
ref.identifier.name = varMap[ref.identifier.name]; | ||
break; | ||
} | ||
scopeFrom = scopeFrom.upper; | ||
} | ||
} | ||
@@ -162,0 +198,0 @@ } |
@@ -5,3 +5,3 @@ { | ||
"main": "lib/esshorten.js", | ||
"version": "1.1.5", | ||
"version": "1.1.6", | ||
"engines": { | ||
@@ -8,0 +8,0 @@ "node": ">=0.6.0" |
24067
526