urlresolver ()

This is very experimental API and used to register a custom URL resolver function with the environment. It's invoked whenever a node has matched but more data is left to parse. This can be used to implement virtual items. This works in combination with generator but handles the URL matching part of the equation.

The registered function is invoked with a source object and a list of URL path segments.

Example

from lektor.sourceobj import VirtualSourceObject
from lektor.utils import build_url

class Source(VirtualSourceObject):

    @property
    def path(self):
        return self.record.path + '@source'

    @property
    def url_path(self):
        return build_url([self.record.url_path, 'source.txt'])

@env.urlresolver
def match_source_file(node, url_path):
    if url_path == ['source.txt'] \
       and isinstance(node, Record) \
       and not node.is_attachment:
        return Source(node)

Comments