Add polymorphic field type to Lektor
Project description
Lektor Polymorphic Type
This plugin adds a new polymorphic lektor field type, polymorphic
.
The determination of the actual type implementation of the field value
is deferred until evaluation time.
A motivating use case is to support having a “body” field whose
formatting can be switched between, e.g., markdown
, and html
(or
some other formatted type, such as reStructuredText.)
Installation
Add lektor-polymorphic-type to your project from command line:
lektor plugins add lektor-polymorphic-type
See the Lektor plugin documentation for more information.
How It Works
If the field has a polymorphic_type
option set, that value is evaluated
and the result is interpreted as the name of the final type for the
field.
If no polymorphic_type
option is set for the field, then we look for a
field on the current record whose name is name of the current field
with “_type
” appended.
Examples
Simple Example
Here is an example model file for a simple page, with a selectable body format:
# page.ini
[model]
name = Page
label = {{ this.title }}
[fields.title]
label = Title
type = string
[fields.body]
label = Body
type = polymorphic
[fields.body_type]
label = Body Type
type = select
choices = markdown, html, text
default = markdown
Here, the value of the body_type
field on a particular page will
determine whether the body
field is interpreted as being markdown
,
html
or text
.
Contrived Example
Here is a contrived example showing the use of the polymorphic_type
option:
# page.ini
[model]
name = Page
label = {{ this.title }}
[fields.title]
label = Title
type = string
[fields.body]
label = Body
type = polymorphic
polymorphic_type = 'html' if this.body.lstrip().startswith('<') else 'markdown'
In this case, the body
field will be interpreted as raw HTML if the
content of that field starts with a “<
”, otherwise it will be
interpreted as Markdown text.
Author
Jeff Dairiki dairiki@dairiki.org
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for lektor-polymorphic-type-0.1b1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | a21cf4731156dbd358aa22dcbbc00dd7f96b590fce6b5fd4378b0935e0837b70 |
|
MD5 | acdd7b6343e7b5f044850b7e62251161 |
|
BLAKE2b-256 | 70a595a5b36906f0a8ba694443b4e7894d6c51f71cbfef100377a86e7c28e3d2 |
Hashes for lektor_polymorphic_type-0.1b1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cdf771b0a383fac6572c50e78f064e0f0ae18d6136c436a427db4dab003b2d9d |
|
MD5 | bdac13fd0e95d3dd80f345d88ec1a44a |
|
BLAKE2b-256 | 287ef7d298b3211063c733ddfe7ac87bdcc7dc9d6ce8e26849694330771c2fc6 |