Example #1
0
 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]"
Example #2
0
 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."