#!/usr/bin/python # TYPE:lang # DESC:A French verb conjugator. # ARCH:verbs.tar.gz #MODULES from dircache import listdir #CONSTANTS VERBDIR = './verbs/' PRONOUNS = ['je', 'tu', 'il, elle, on', 'nous', 'vous', 'ils, elles'] EREND = { 'je':'e', 'tu':'es', 'il':'e', 'nous':'ons', 'vous':'ez', 'ils':'ent' } KNOWNVERBS = listdir(VERBDIR) for verb in range(len(KNOWNVERBS)): if KNOWNVERBS[verb].split('.')[-1] != 'verb': KNOWNVERBS.remove(KNOWNVERBS[verb]) else: KNOWNVERBS[verb] = KNOWNVERBS[verb].split('.')[0] #CLASSES class Verb: def __init__(self, inf, type): self.inf = inf self.type = type if self.type in KNOWNVERBS: self.get_data(self.type) elif self.type == 'irr': self.get_data(inf) self.make_forms() def get_data(self, inf): datafile = open(VERBDIR+inf+'.verb').readlines() self.junks = int(datafile[0].strip()) self.stem = self.inf[:-self.junks] self.buds = [] self.aux = datafile[7].split(', ')[0].strip() self.passend = datafile[7].split(', ')[1].strip() if self.passend[0] != '!': self.passe = self.stem + self.passend else: self.passend = ''.join(self.passend[1:]) self.passe = self.passend for i in range(6): self.buds.append(datafile[i+1].strip()) def make_forms(self): self.forms = [] for i in range(len(self.buds)): self.forms.append(self.stem+self.buds[i]) def show_present(self): for i in range(len(self.buds)): print "%s: %s" % (PRONOUNS[i], self.forms[i]) def show_past(self): for i in range(len(self.buds)): print "%s: %s %s" % (PRONOUNS[i], eval(self.aux.upper()+'.forms[i]'), self.passe) #FUNCTIONS #MORE CONSTANTS AVOIR = Verb('avoir', 'irr') ETRE = Verb('etre', 'irr') #RUN coolverb = Verb('prendre', 'irr') coolverb.show_present() print coolverb.show_past() print likeverb = Verb('chanter', 'er') likeverb.show_present() print likeverb.show_past() print irverb = Verb('finir', 'ir') irverb.show_present() print AVOIR.show_past()