Metadata-Version: 2.1
Name: lektor-expression-type
Version: 0.1b1
Summary: Add jinja-evaluated types to Lektor
Home-page: https://github.com/dairiki/lektor-expression-type/
Author: Jeff Dairiki
Author-email: dairiki@dairiki.org
License: BSD
Description: # Lektor Expression Type Plugin
        
        Add jinja-evaluated types, `expression` and `format_expression`, to
        [Lektor][].
        
        These allow one to define data model fields whose values are Jinja2
        expressions.
        
        ## The Types
        
        Both the `expression` and `format_expression` types are evaluated by
        the jinja template engine.
        
        **`expression`**
        
        The `expression` type is evaluated as a Jinja2 expression.
        
        An example value for this type might be:
        ```
        this.children.order_by('-pub_date').limit(4)
        ```
        This would evaluate to a Lektor [Query][] instance.
        
        **`format_expression`**
        
        The `format_expression` type is evaluated as a Jinja2 template.  It
        will always evaluate to a string.
        
        An example value for this type might be:
        ```
        The blog contains {{ site.get('/blog').count() }} pages.
        ```
        
        ## Installation
        
        Add lektor-expression-type to your project from command line:
        
        ```
        lektor plugins add lektor-expression-type
        ```
        
        See [the Lektor plugin documentation][plugins] for more information.
        
        ## Motivating Example
        
        Suppose you want to create an _Index_ data model, for pages which will
        be used display lists of other pages on your site.
        You could create a model definition like this (called, perhaps,
        `models/index.ini`):
        
        
        ```ini
        [model]
        name = Index Page
        label = Index: {{ this.title}}
        
        [fields.title]
        label = Title
        type = string
        
        [fields.items]
        label = Items
        type = expression
        description = Pages to list on this page
        ```
        
        In a particular index page which uses this model, you might set the
        `items` field to
        `site.get('/projects').filter(F.tag == 'interesting')`,
        then in the page template (e.g. in `templates/index.html`) one could
        reference the `items` field (e.g. `{% for page in this.items %}`)
        to determine which pages to display on the page.
        
        ## Author
        
        Jeff Dairiki <dairiki@dairiki.org>
        
        
        [Lektor]: <https://www.getlektor.com/> "Lektor Static Content Management System"
        [plugins]: <https://www.getlektor.com/docs/plugins/>
        [Query]: <https://www.getlektor.com/docs/api/db/query/>
        
Keywords: Lektor plugin
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Plugins
Classifier: Environment :: Web Environment
Classifier: Framework :: Lektor
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
Description-Content-Type: text/markdown
