Edgewall Software

Ticket #206: prefixed-virtual-path.diff

File prefixed-virtual-path.diff, 2.4 KB (added by Waldemar Kornewald <wkornewald@…>, 16 years ago)

patch that does exactly that

  • genshi/template/tests/loader.py

     
    290290        file2 = open(os.path.join(dir2, 'tmpl1.html'), 'w')
    291291        try:
    292292            file2.write("""<html xmlns:xi="http://www.w3.org/2001/XInclude">
    293               <xi:include href="foo.html" /> from sub1
     293              <xi:include href="../foo.html" /> from sub1
    294294            </html>""")
    295295        finally:
    296296            file2.close()
     
    300300        file3 = open(os.path.join(dir3, 'tmpl2.html'), 'w')
    301301        try:
    302302            file3.write("""<html xmlns:xi="http://www.w3.org/2001/XInclude">
    303               <xi:include href="foo.html" /> from sub2
     303              <xi:include href="../foo.html" /> from sub2
    304304            </html>""")
    305305        finally:
    306306            file3.close()
  • genshi/template/loader.py

     
    296296        request to the delegate.
    297297       
    298298        >>> load = prefixed(
    299         ...     app1 = lambda filename: ('app1', filename),
    300         ...     app2 = lambda filename: ('app2', filename)
     299        ...     app1 = lambda filename: ('app1', filename, None, None),
     300        ...     app2 = lambda filename: ('app2', filename, None, None)
    301301        ... )
    302302        >>> print load('app1/foo.html')
    303         ('app1', 'foo.html')
     303        ('app1', 'app1/foo.html', None, None)
    304304        >>> print load('app2/bar.html')
    305         ('app2', 'bar.html')
     305        ('app2', 'app2/bar.html', None, None)
    306306
    307307        :param delegates: mapping of path prefixes to loader functions
    308308        :return: the loader function
     
    313313                if filename.startswith(prefix):
    314314                    if isinstance(delegate, basestring):
    315315                        delegate = TemplateLoader.directory(delegate)
    316                     return delegate(filename[len(prefix):].lstrip('/\\'))
     316                    path, _, fileobj, mtime = delegate(
     317                        filename[len(prefix):].lstrip('/\\'))
     318                    return path, filename, fileobj, mtime
    317319            raise TemplateNotFound(filename, delegates.keys())
    318320        return _dispatch_by_prefix
    319321    prefixed = staticmethod(prefixed)