1#! /bin/sh/env python 2 3import sys 4import re 5import os 6 7python_out_folder = sys.argv[1] 8 9filematch = re.compile(r"(\w+)_stemmer\.py$") 10 11imports = [] 12languages = [] 13 14for pyscript in os.listdir(python_out_folder): 15 match = filematch.match(pyscript) 16 if (match): 17 langname = match.group(1) 18 titlecase = langname.title() 19 languages.append(" '%(lang)s': %(title)sStemmer," % {'lang': langname, 'title': titlecase}) 20 imports.append('from .%(lang)s_stemmer import %(title)sStemmer' % {'lang': langname, 'title': titlecase}) 21imports.sort() 22languages.sort() 23 24src = '''__all__ = ('language', 'stemmer') 25 26%(imports)s 27 28_languages = { 29%(languages)s 30} 31 32try: 33 import Stemmer 34 cext_available = True 35except ImportError: 36 cext_available = False 37 38def algorithms(): 39 if cext_available: 40 return Stemmer.language() 41 else: 42 return list(_languages.keys()) 43 44def stemmer(lang): 45 if cext_available: 46 return Stemmer.Stemmer(lang) 47 if lang.lower() in _languages: 48 return _languages[lang.lower()]() 49 else: 50 raise KeyError("Stemming algorithm '%%s' not found" %% lang) 51''' % {'imports': '\n'.join(imports), 'languages': '\n'.join(languages)} 52 53with open(os.path.join(python_out_folder, '__init__.py'), 'w') as out: 54 out.write(src) 55