def __init__(self,rep = None,S = None): if isinstance(rep,core.replacement_map): self._replacement_map = rep elif rep != None: self._replacement_map = core.replacement_map() for key, value in dict(rep).iteritems(): self._replacement_map[S(key)] = S(value) else: self._replacement_map = core.replacement_map() self.S = S
def replace(self,*args): if len(args) == 1: if isinstance(args[0],ReplacementMap): rep = args[0]._replacement_map else: rep = ReplacementMap(args[0],self.S)._replacement_map elif isinstance(args[0],(list,tuple)): if len(args) == 1 and isinstance(args[0][0],(list,tuple)): rep = ReplacementMap(args[0],self.S)._replacement_map else: rep = ReplacementMap(args,self.S)._replacement_map elif len(args) == 2: rep = core.replacement_map() rep[self.S(args[0])] = self.S(args[1]) else: raise ValueError('invalid substitution arguments') #from evaluator import ReplaceEvaluator #return ReplaceEvaluator(rep,S=self.S)(self) return self.S(core.replace(self,rep))