Mercurial > hg > contenttransformer
diff contenttransformer/app.py @ 0:29805d442afc
initial commit of contenttransformer; still in the stub stage
author | k0s <k0scist@gmail.com> |
---|---|
date | Mon, 11 Jan 2010 11:32:24 -0500 |
parents | |
children | aa491070ccf3 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contenttransformer/app.py Mon Jan 11 11:32:24 2010 -0500 @@ -0,0 +1,29 @@ +import os +import sys +from fnmatch import fnmatch +from paste.fileapp import FileApp +from pkg_resources import iter_entry_points + +class FileTypeTransformer(object): + transformers = {} + + def __init__(self, *types, **kwargs): + """types is a list of two-tuples: glob pattern (string), transformer name (string, name of entry point)""" + self.types = types + self.kwargs = kwargs # intended to be arguments to the xformers + for blah in iter_entry_points('content_transformers'): + try: + self.transformers['foo'] = entry_point.load() + except: + raise + for pattern, transformer_name in self.types: + assert transformer_name in self.transformers + + def __call__(self, path): + """this should return something that is callable with (environ, start_response) to return a response; the transformer thing""" + filename = os.path.basename(path) + for pattern, transformer_name in self.types: + if fnmatch(filename, pattern): + content = file(path).read() + return self.transformers[transformer_name](content) + return FileApp(path)