def rename(self, r_strategy, iBuilder, scopeAnalyst, debug=False): if r_strategy == self.RS.NONE: return iBuilder.get_text() # return iBuilder.get_text_wo_literals() elif r_strategy == self.RS.NORMALIZED: text = iBuilder.get_text() # text = iBuilder.get_text_wo_literals() norm = Normalizer() (ok, out, _err) = norm.web_run(text, rename=True) if not ok: return text # The normalization affects global variables too # Fall back on input in those cases clear = Beautifier() (ok, b_out, _err) = clear.web_run(out) # print b_out, _err if not ok: return text iB = IndexBuilder(WebLexer(b_out).tokenList) iB_copy = deepcopy(iB) sA = WebScopeAnalyst(b_out) isGlobal = sA.isGlobal # print 'isGlobal------' # for key,val in isGlobal.iteritems(): # print key,val for line_num, line in enumerate(iB.tokens): for line_idx, (token_type, token) in enumerate(line): if is_token_subtype(token_type, Token.Name): (l, c) = iB.tokMap[(line_num, line_idx)] p = iB.flatMap[(l, c)] # print token, isGlobal.get((token, p), True) if isGlobal.get((token, p), True): iB_copy.tokens[line_num][line_idx] = \ iBuilder.tokens[line_num][line_idx] return iB_copy.get_text() elif r_strategy == self.RS.SCOPE_ID: return ''.join(self.renameUsingScopeId(scopeAnalyst, iBuilder)) elif r_strategy == self.RS.HASH_ONE: return self.collapse( self.renameUsingHashDefLine(scopeAnalyst, iBuilder, twoLines=False, debug=debug)) elif r_strategy == self.RS.HASH_TWO: return self.collapse( self.renameUsingHashDefLine(scopeAnalyst, iBuilder, twoLines=True, debug=debug)) else: return iBuilder.get_text()