#!/usr/bin/env python # # $Id: templateset.py,v 1.1 2003/03/16 16:29:00 doughellmann Exp $ # # Copyright 2003 Doug Hellmann. # # # All Rights Reserved # # Permission to use, copy, modify, and distribute this software and # its documentation for any purpose and without fee is hereby # granted, provided that the above copyright notice appear in all # copies and that both that copyright notice and this permission # notice appear in supporting documentation, and that the name of Doug # Hellmann not be used in advertising or publicity pertaining to # distribution of the software without specific, written prior # permission. # # DOUG HELLMANN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, # INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN # NO EVENT SHALL DOUG HELLMANN BE LIABLE FOR ANY SPECIAL, INDIRECT OR # CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS # OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # """Load up a set of templates. """ __rcs_info__ = { # # Creation Information # 'module_name' : '$RCSfile: templateset.py,v $', 'rcs_id' : '$Id: templateset.py,v 1.1 2003/03/16 16:29:00 doughellmann Exp $', 'creator' : 'Doug Hellmann ', 'project' : 'UNSPECIFIED', 'created' : 'Sun, 16-Mar-2003 10:47:39 EST', # # Current Information # 'author' : '$Author: doughellmann $', 'version' : '$Revision: 1.1 $', 'date' : '$Date: 2003/03/16 16:29:00 $', } try: __version__ = __rcs_info__['version'].split(' ')[1] except: __version__ = '0.0' # # Import system modules # import glob import os import UserDict # # Import Local modules # import happydoclib from happydoclib.trace import trace from happydoclib.docset.docset_TAL.templatefile import TemplateFile # # Module # TRACE_LEVEL=0 class TemplateSet(UserDict.UserDict): """Manages a set of templates. """ def __init__(self, directoryName, patterns=['*.pt']): """Load the templates from directoryName. """ UserDict.UserDict.__init__(self) self.directory = directoryName for pattern in patterns: filenames = glob.glob(os.path.join(directoryName, pattern)) for filename in filenames: template_file = TemplateFile(filename, self) basename = os.path.basename(filename) self[basename] = template_file return def __getitem__(self, name): try: template = UserDict.UserDict.__getitem__(self, name) except KeyError: raise MissingTemplateError(name, self.directory) return template class MissingTemplateError(KeyError): def __init__(self, templateName, templatePathName): Exception.__init__(self) self.name = templateName self.path = templatePathName return def __str__(self): return 'Missing template %s in %s.' % (self.name, self.path, )