YAML glue for structural templating and processing
Project description
Yglu ᕄ
Yglu is YAML enriched with an advanced expression language. Unlike usual text templating, Yglu relies on the YAML structure and leverages its typing features combined with the YAQL query language.
This association enables templating and functional processing a bit like if YAML nodes where spreadsheet cells.
Yglu input documents are pure YAML using tags for computed nodes.
input
a: 1
b: !? .a + 1
|
output
a: 1
b: 2
|
See the test samples for more examples.
Install
pip install yglu
Run
Usage: yglu [options] [<filename>]
Options:
-v - -version Print version and exit.
-h - -help Print help and exit.
Tags
Tags specify an alteration of the document structure.
Tag | Description |
---|---|
!? |
Evaluate an expression. The result can be a scalar, mapping or sequence. |
!- |
Hide the node in the output but keep it accessible from expressions. When used with a scalar, it evaluates it as an expression. |
!() |
Make the node reusable in expressions as a function. It is also hidden. |
Expressions
Expressions are written in YAQL.
They are evaluated in a context with the following predefined variables:
Variable | Description |
---|---|
$_ |
Refers to the current document root. Can be omitted at the beginning of the expression if it starts with a dot. |
$ |
Implicit argument of functions. |
$env |
Gives access to environment variables. Disabled by default. Set the $YGLU_ENABLE_ENV environment variable to enable. |
Built-in Functions
In addition to standard YAQL operators, Yglu defines the following functions:
Function | Description |
---|---|
$import(filename) |
Imports another document in the current node. |
Planned Features
- Use expressions in mapping keys.
- Tag for merging mappings easily (e.g. conditionally)
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.