summaryrefslogtreecommitdiff
path: root/docs/rules.rst
blob: 0d4cd028b78382835b3000a3c88603dc7901a172 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
**********
Rules Mode
**********

In the rules mode, qface is used as the qface exectuable. In this mode the code generator consits of a rule document and template files and optionally a filter module.

Whereas normally the generator writer create an own python package in this module only some documents are needed and the qface rules is used.

Setup
=====

To get started create a `qface-rules.yml` document and a templates folder::

    qface-rules.yml
    templates/


In the rules file you provide the code generation rules according to the rule generator documentation. The templates folder will contain the required templates.

Filters
=======

To provide extra filder you need to create a `filters.py` document with the declaration of your filters::

    # a filter takes in a domain element or string
    # and returns a string
    def echo(s):
        return '{} World!'.format(s)

    def get_filters():
        # returns a dict of new filters
        return {
            'echo': echo
        }

The filters module will be loaded by qface and all entries to the filters dictionary are added to the global lists of Jinja filters. You can now use it like any other Jinja filter.

.. code-block:: jinja

    {{ "Hello" | echo }}

Will resolve to ``Hello World!``.


Running
=======

To run now the generator you can simply call::

    qface --rules qface-rules.yml --target out counter.qface

This will take your rules and generate the files inside the out folder based on the `counter.qface` interface file.