#!/usr/bin/env python """ alphachresto - graded alphabet learning system generator """ import re, sys, os sys.path.append('/home/user/.pylib/') sys.path.append('/home/pat/.pylib/') from vecid import id from utils import freq import codecs from unicodedata import category sys.stdin = codecs.getreader('utf-8')(sys.stdin) sys.stdout = codecs.getwriter('utf-8')(sys.stdout) sys.stderr = codecs.getwriter('utf-8')(sys.stderr) from pprint import pprint import os, shutil from glob import glob class Lexicon: """ The total lexicon from the input word pairs. @@TODO make this a sublass of dict """ def __init__(self, incoming): self.incoming = incoming self.lexicon = self._process_input() self.source = [source for source, target in self.lexicon.items()] self.target = [target for source, target in self.lexicon.items()] self.source_letters = set(''.join(self.source)) self.source_language = id(''.join(self.source))[-1][1] self.target_language = id(''.join(self.target))[-1][1] self.target_letters = set(''.join(self.target)) self.source_letters_by_freq = self._byfreq(self.source_letters) self.target_letters_by_freq = self._byfreq(self.target_letters) def _process_input(self): return dict([line.strip().split("\t") for line in self.incoming]) def _byfreq(self,sequence): fq = freq(sequence) return sorted(sequence, key=lambda letter: fq[letter], reverse=True) lex = Lexicon(sys.stdin) print ''.join(lex.target_letters_by_freq ) class Vocabulary: """ the subset of Lexicon which the learner has seen """ def __init__(self): pass class Wordset: def __init__(self, words, lexicon): self.lexicon = lexicon self.words = words class Level: def __init__(self, letters, lexicon): self.letters = letters self.lexicon = lexicon self.pattern = regexify(letters) def html(self): pass class Course: def __init__(self, name): self.workdir = name self.rebuild() self.levels = ['a','b','c'] self.generate() def rebuild(self): if os.path.isdir(self.workdir): print "%s exists, deleting" % self.workdir for f in glob(self.workdir+os.sep+'*'): print f print "%s exists, deleting file" % f os.unlink(f) os.rmdir(self.workdir) os.mkdir(self.workdir) def generate(self): for level in self.levels: sys.stderr.write("generating... %s\n" % level) def _mkfile(self, fname): codecs.open(self.workdir + os.sep + fname,'w').write(str(fname)) course = Course('swahili')