#coding=utf-8 ''' This script reads CamelForth source files and parses the glossary definition into a text file summary. Created on 12.02.2012 @author: christopherkalus, uho@forth-ev.de ''' import os import glob import codecs import re import string GLOSSARYDEFS=re.compile("^;C|^;X|^;Z|^;U|^;A|===\W*$") def parseInputFile(filename): """Parses glossary definitions from file 'filename' output: list of lines""" infile=open(filename) (pfad, filename)=os.path.split(filename) result=['',filename] for zeile in infile: if GLOSSARYDEFS.search(zeile): elemente = filter(lambda e:e!='', zeile.strip().split(" ")) elemente.append(" ") if len(elemente) < 3: result.append("".join(map(lambda e:e.ljust(80,"=") if "===" in e else e, elemente))+" ") else: name, stackcomment, comment = map(string.strip, elemente[0:3]) result.append("%-16s%-30s%s " % (name, stackcomment, comment)) infile.close() return result def parseInputFiles(inputfileGlob): """Parse glossary definitions form files matching 'glob'""" result=[] for filename in glob.glob(os.path.join(os.getcwd(), inputfileGlob)): print "parsing %s ..." % (filename,), result.extend(parseInputFile(filename)) print "ok" return result def writeOutputFile(filename, lines): print "writing %s ..." % (filename,), outfile=codecs.open(filename,"w","utf-8").write("\n".join(lines)+"\n") print "ok" if __name__=="__main__": print "GlossaryMaker.py - generate glossory summary for CamelForth" writeOutputFile("Glossary.txt", parseInputFiles("*.s43")) print "done"