# Lattenizer
Lattenizer is powerful language, based on Latte (opens new window) templating language, used in Floweye.
We are using version 2.8.3 of Latte (opens new window).
# Demo
$hello
=>world
$users
=>[1, 2, 3]
Lattenizer | Output |
---|---|
|
|
|
|
# Integration
You can use lattenizer in variant places:
# Syntax
Latte is full-featured templating language, take a first look at official documentation (opens new window).
Basic syntax is divided into:
- text
- macros
- filters
# Text
This is pure text. So simple, right?
# Macros
Take a look at default Latte macros (opens new window).
Macro | Example |
---|---|
|
|
|
|
|
|
|
|
# Filters
Filters modify input before printing.
Take a look at default Latte filters (opens new window).
Default filters
Filter | Description | Usage | Returns |
---|---|---|---|
truncate | Shortens an input preserving whole words | {='Hello how are you?'| truncate:5}' | Hell… |
substr | Returns part of a string | {='12345'| substr:1,2} | 23 |
trim | Removes whitespace from begging and end | {=' Joe '| trim} | Joe |
striptags | Removes HTML tags | {='<a>Click</a>'| striptags} | Click |
strip | Removes whitespace | {=' Joe Doe '| strip} | Joe Doe |
indent | Indents an input from left with tabs | #{='hello'| indent:1,'\t'} | # hello |
replace | Replace all occurrences | {='A B C'| replace:' ', '-'} | A-B-C |
replaceRE | Replace all pattern occurrences | {='A B C'| replaceRE:'#\s#', '-'} | A-B-C |
padLeft | Completes an input to given length from left | {='5'| padLeft:5,'0'} | 00005 |
padRight | Completes an input to given length from right | {='5'| padRight:5,'0'} | 50000 |
repeat | Repeats input given times | {='5'| repeat:5} | 55555 |
implode | Joins an array to a string | {=[5,4,3,2,1]| implode:','} | 5,4,3,2,1 |
webalize | Adjusts a string to the shape used in the URL | {='Hey I am Joe'| webalize} | hey_i_am_joe |
breakLines | Inserts HTML line breaks before all newlines | {='Hello\nworld'| breaklines'} | Hello<br>\nworld |
reverse | Reverse an array or a string | {='Hello'| reverse} | olleH |
length | Returns length of an array or a string | {='Hello'| length} | 5 |
lower | Makes string lower case | {='Hello'| lower} | hello |
upper | Makes string upper case | {='Hello'| upper} | HELLO |
firstUpper | Makes the first letter upper case | {='joe'| firstUpper} | Joe |
capitalize | The first letter in each word upper case | {='joe DOE'| capitalize} | Joe Doe |
date | Formats date | {='2019/05/15'| date:'j.n.Y'} | 15.5.2019 |
number | Formats number | {= 1234.20| number:2,',',' '} | 1 234,20 |
bytes | Format size in bytes | {= 4664565461| bytes} | 4.34 GB |
noescape | Prints a variable without escaping | {= '<div></div>'| noescape} | <div></div> |
Floweye filters
Filter | Description | Usage | Returns |
---|
| toHHMMSS
| Converts seconds (integer) into HH:MM:SS format| {= 3666|toHHMMSS}
| 01:01:06
| | uptime
| Converts seconds (integer) into d h m s | {= 3666|uptime}
| 1h 1m 6s
| | timeDiff
| Relative time (translated) from now | {= '2019/05/15'|timeDiff}
| 5 days ago
| | neon
| Formats an input to NEON format | {= ['name' => 'Joe']|neon}
| name: Joe
| | json
| Formats an input to JSON format | {= ['name' => 'Joe']|json}
| {"name": "Joe"}
| | gravatar
| Generates avatar from email
| <img src="{$_process->activeStep->resolver->email|gravatar:[size=>48]}"/>
| <img src="URL"/>
| | pgravatar
|
Generates avatar from user proxy entity | <img src="{$_process->activeStep->resolver|pgravatar:[size=>48]}"/>
| <img src="URL"/>
|
# Chaining filters
Formatting input with multiple filters is done by attaching one filter after the other. Filter priority is from left to right.
{= 'foo bar'|replace:' ', '-'|upper}
prints FOO-BAR
# Using filters in expression
{var $name = ($title|upper) . ($subtitle|lower)}
# Features
We provide several features special for Floweye developer experience.
# Links
You can manually create a link for your buttons or hrefs.
Method | Scope | Description |
---|---|---|
$_linker->detailLink($processId) | panels, callbacks | Creates link to the process detail. |
$_linker->nextLink($processId) | panels | Creates link to move process to the next step. |
$_linker->filePreview($_process->files[0]) | panels | Creates link to preview file. |
$_linker->fileDownload($_process->files[0]) | panels | Creates link to download file. |
$_linker->contactDetail($contact, $process = null) | panels | Creates link to contact detail. |
$_linker->contactCreate($process = null) | panels | Creates link to create and then edit new contact. |
Examples
<a href="{$_linker->detailLink($_process->id)}">Process detail</a>
<a href="{$_linker->detailLink($processes[0]->id)}">Subprocess detail</a>
2
<a href="{$_linker->nextLink($_process->id)}">Move next</a>
# Functions
List of our functions, previously used in LPL. There are accessible under $_fn
object.
Function | Description | Usage | Returns |
---|---|---|---|
jmespath | Filter structures http://jmespath.org. | $_fn->jmespath(data, "[2:5]") | [2,3,4] |
timeCombine | Adds two HH:MM strings. | $_fn->timeCombine("1:44","0:20") | 02:04 |
dateDays | Returns number of days between two dates | $_fn->dateDays("1.1.2019", "2.1.2019") | 2 (int) |
map | Maps values from array. | $_fn->map(readers, "fullname") | ["FS", "MD"] |
colorReadable | Contrast enough for reading. | $_fn->colorReadable("#ffffff", "#000000") | true |
If you would like to use function returning arrays, you gonna need {output(<fn>)}
macro.
# Output
Lattenizer is limited to returning strings only. To return other types there is an output
function.
events:
on_process_start:
mutate_variable:
config:
variables:
pick_item_input: "{output([key1 => value1, key2 => value2, key3 => value3])}"
steps:
first:
layout:
sections:
s1:
panels:
pick_item__6:
render: { width: 4 }
config:
input: "{output($items)}"
output: somevar
useKeys: true
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
To return array data from LoosyVariable
use toArray()
function. LoosyVariable
is wrapper object around json variable data. F.e. {output($data->customer_data)}
# Errors
In case that variable is used incorrectly, e.g. when trying to get non-existing key then warning is rendered:
{$__user->foobar}
Rendered warning:
{unknown property foobar}