35 lines
870 B
Plaintext
35 lines
870 B
Plaintext
|
title: generator
|
||
|
---
|
||
|
type: method
|
||
|
---
|
||
|
summary: Registers a custom generator function.
|
||
|
---
|
||
|
body:
|
||
|
|
||
|
This is very experimental API and used to register a function that can
|
||
|
generate source objects relative to another one. This works in combination
|
||
|
with [urlresolver :ref](../urlresolver/) but handles the build-all part of
|
||
|
the equation.
|
||
|
|
||
|
The registered function is invoked for each source after it was build. As
|
||
|
such it's important to only return items if a virtual sub resource actually
|
||
|
exists for a page.
|
||
|
|
||
|
## Example
|
||
|
|
||
|
```python
|
||
|
from lektor.sourceobj import VirtualSourceObject
|
||
|
from lektor.db import Record
|
||
|
|
||
|
class Source(VirtualSourceObject):
|
||
|
|
||
|
@property
|
||
|
def url_path(self):
|
||
|
return self.parent.url_path + 'source.txt'
|
||
|
|
||
|
@env.generator
|
||
|
def generate_source_file(node):
|
||
|
if isinstance(node, Record) and not node.is_attachment:
|
||
|
yield Source(node)
|
||
|
```
|