Templating Techniques for Scenarios
Handle data like a pro π§ββοΈ
Escaping special characters
{β{#escape}β}{β{name}β}{β{/escape}β}
// if {{name}} is 'aaaa"aaaa', this operator will add
// a backslash before each special character for escaping them.
// The result of templating will be: 'aaaa\"aaaa'
Removing line breaks
{{#stripNewLine}β}this new
line{β{/stripNewLine}}
// operator removes line breaks
// result of templating will be: 'this new line'
Escaping line breaks (useful for JSONs)
This operator escapes \n
(line breaks). Thanks to that a multiline JSON can be sent in the http-request body as follows:
//{{json}} is a field value with multiline json
//body of the http-request:
{"key":"{{#escape}}{{#escapeNewLine}}{{json}}{{/escapeNewLine}}{{/escape}}"}
Replace "
β'
"
β'
{{#replaceDoubleQuotes}}hello "there'{{/replaceDoubleQuotes}}
// result hello 'there'
Encode URI
Executes encodeUriComponent() for the string
{{#encodeURIComponent}}Mr. John Smith{{/encodeURIComponent}}
// result: Mr.%20John%20Smith
Decode URI
Decodes the string encoded by encodeURIComponent
{{#decodeURIComponent}}Mr.%20John%20Smith{{/decodeURIComponent}}
// result: Mr. John Smith
Convert to JS-multiline
Useful feature for applying regex.
{{#toJsMultiLine}}test
test{{/toJsMultiLine}}
//Regex example (pay attention β no quotes ""):
{{#toJsMultiLine}}{{template}}{{/toJsMultiLine}}.replace(/\{\$name\}/g,"{{field}}")
// result: test\ntest
Escape JSON
{{#escapeJson}}He didn't say, "Stop!"{{/escapeJson}}
// result: He didn't say, \"Stop!\"
Formatting date
{{#formatDate|dd MMMM, Y}}{{date}}{{/formatDate|dd MMMM, Y}}
// {{date}} == 2020-04-27T12:31:19.000Z
// result of templating will be: 27 April, 2020
Learn more about date/time formats.
Handling boolean properties
// shows if is_vip == true
{{#is_vip}}vip{{/is_vip}}
// shows if is_vip == false
{{^is_vip}}not vip{{/is_vip}}
Nesting arrays of linked objects
If a property has arrayLink type, we can nest its objects as follows:
// {{books_ids}} β field type of arrayLink
// {{title}} and {{year}} β the fields of linked objects
{{#books_ids}}
β {{title}}, {{year}}
{{/books_ids}}
// If such {{books_ids}} contains, for example, three links,
// such a construction will result as follows:
// β Life of Samuel Johnson, 1791
// - Crime and Punishment, 1866
// - The Sun Also Rises, 1927
Handling arrays
// We can template the Array field, iterationg its elements:
{{#arr}}
- {{.}}
{{/arr}}
// if {{arr}} == a,b,c
// result of templating will be:
// - a
// - b
// - c
Also, we can avoid empty elements of an array:
{{#musketeers}}
{{#.}}
- {{.}}
{{/.}}
{{/musketeers}}
// {{musketeers}} == "Athos", "Aramis", "", "D'Artagnan"
// result of templating will be:
// - Athos
// - Aramis
// - D'Artagnan
Check the tips for advanced working with Arrays.
Handling JSON
JSON templating
Let's a property has json-type, and equals to:
// {{book-json}} is a json-type field:
{
"title":"The Wealth of Nations",
"year": 1776,
"autor: {
"first_name":"Adam",
"last_name":"Smith"
},
"is_classic":true
}
We can address to its properties as follows:
{{book-json.title}} == The Wealth of Nations
{{book-json.is_classic}} == true
{{book-json.autor.first_name}} == Adam
Remember, that if JSON contains array of objects, you have to apply JS SDK methods (here it is an instruction).
JSON as a JS object
Also, you can apply JS for parsing JSON, handle it as a js-object (don't forget to turn on JS-evaluating)
{{json}}.title
// or
{{json}}.title[0].name
// or
{{json}}["title"]
Lodash for JSON parsing
_.get({{json}},"title[0].name")
Using now, today, +/β days
now == current date and time
today == current date, time 00:00
now -1 days == yesterday
today +N days == N days after today
now +10 minutes +15 seconds == 10 minutes and 15 seconds after the current moment
Using Lodash
You can apply Lodash in expressions. Lodash is a modern JavaScript utility library delivering modularity, performance & extras.
// some examples:
_.defaults({ 'a': 1 }, { 'a': 3, 'b': 2 });
// β { 'a': 1, 'b': 2 }
_.partition([1, 2, 3, 4], n => n % 2);
// β [[1, 3], [2, 4]]
_.difference([2, 1], [2, 3]);
// => [1]
Last updated
Was this helpful?