def __init__(self,verbose=False): self.models = [] self.prompt = '> ' self.completekey = None self.cmdqueue = [] self.stop = False self.stdout = stdout self.minsim = 0.34 self.verbose = verbose print "Loading data... ", stdout.flush() try: if len(argv)==2: self.datafile = argv[1] else: self.datafile = "pretzel.dat" f = open(self.datafile) str = f.readline() while str and len(str) is not 0: if str[-1]=='\n': str = str[:-1] self.models.append([Model(str[:str.find(':')]),str[str.find(':')+1:]]) str = f.readline() print "[done]" except: self.models.append([Model('hello'),'hi']) self.models.append([Model('how are you'),'fine, thanks']) self.models.append([Model('exit'),'exit']) self.models.append([Model('quit'),'quit']) print "[failed] (new database will be created in pretzel.dat after a clean exit (type exit to do that))" print "Initializing argmatch()... ", stdout.flush() argmatch(Model("doors"),"walls") # need to pass anything through it once so that the wordnet dictionnaries get loaded etc. print "[done]"
def arg_translate(self, arg, recursive=False): success = False for item in self.models: args = argmatch(item[0],arg) #mncmp(arg,item[0],self.minsim) itemtmp = item[1] if args is not False: if args is not True: # means we have some arguments for arg in args: itemtmp = itemtmp.replace(arg[0],self.arg_translate(arg[1],True)) success = True if not recursive: self.execute(itemtmp) else: return itemtmp break if not success: if recursive: return arg else: cmd = self.panic() if cmd!="": self.models.append([Model(arg),cmd]) else: print "Received empty input; not adding to database."