what is it?
decoupage is a static file server that allows for index pages configurable with genshi templates and .ini files. I mainly wrote it because i was tired of using apache for serving my website and generating index.html files by hand. Decoupage provides views into the filesystem.
how do i use it?
Set up a paste .ini file that specifies the directory to serve (decoupage.directory) and, optionally, a configuration file .ini file (decoupage.configuraton) which specifies the labels for the files based on directory. An example of a paste .ini file is in decoupage.ini. Note the [app:decoupage] section:
[app:decoupage] paste.app_factory = decoupage.factory:factory decoupage.directory = %(here)s/example decoupage.configuration = %(here)s/example.ini
The labels for files are in example.ini, specified by sections as directories:
[/] foo.txt = a file about cats [/cats] lilly.txt = lilly hobbes.txt = a file about Hobbes
You can specify the entire layout from here. Alternately, you can have an index.ini in a directory which, if present, overrides the default configuration. Such a file is in the fleem subdirectory of example:
/template = index.html fleem.txt = some fleem for ya
Try it out! Install decoupage and run paster serve decoupage.ini and point your browser to the URL it gives you.
how do i do more with decoupage?
Since filenames can't start with a / (just try it!), the functionality of decoupage may be extended with / commands in a section. This is done by adding a setuptools entry_point to [decoupage.formatters]. See the decoupage setup.py and decoupage.formatters for examples. For instance,
Running decoupage-formatters from the command line gives the list of formatters that are available (which are pluggable setuptools extension points at [decoupage.formatters]). For example: /include = site.html could include the site.html genshi template at the top of the body.
- determines how to sort the files in a directory; right now only by case-insensitive alphabetically * reverse : reverse the order of the sorting
- only pass files of a certain pattern; the inverse of ignore calling all with no arguments means only files with descriptions are used
- splits a description into a title and a description via a separator in the description. The template will now have an additional variable, 'title', per file Arguments: * separator: what separator to use (':' by default)
- obtain the description from the filename the file extension (if any) will be dropped and spaces will be substituted for underscores
- ignore files of a glob patterns. These files will not be linked to in the template. e.g. /ignore = .* *.pdf # don't list dotfiles and PDFs
include: include a file at the top of the body css: specify CSS used (whitespace separated list)
Decoupage also makes use of other special intrinsic keywords:
formatters: ordered list of formatters to apply
inherit: inherit configuration from a certain directory (instead of the parent
transform: a list of transformers for contenttransformer