view contenttransformer/app.py @ 1:aa491070ccf3

now works, just doesnt do anything, i dont think
author k0s <k0scist@gmail.com>
date Wed, 13 Jan 2010 23:58:13 -0500
parents 29805d442afc
children 5258325a496a
line wrap: on
line source

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

        # intended to be arguments to the xformers
        # XXX unused
        self.kwargs = kwargs
        
        for entry_point in iter_entry_points('content_transformers'):
            try:
                self.transformers[entry_point.name] = entry_point.load()
            except:
                raise # XXX
        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)