Liquid Templating
Liquid is a popular templating language originally created by Shopify and used throughout the web. MESA uses a specialized version of Liquid that makes it easy to use and modify text or variables within your workflows.
Liquid displays dynamic content by combining objects, tags, and filters.
Objects
In MESA, an object is created to contain the output for each step when the workflow is run. Each step has a unique key that can be referenced in later steps as a Liquid object. Objects and variables are displayed when enclosed in double curly braces: {{
and }}
.
In this case, Liquid is rendering the content of the customer.email
property that contains the text jannette.parks@getmesa.com.
MESA created the shopify
object when a Shopify Order Created trigger with a unique key of shopify
has been run.
Tags
Tags create the logic and control flow for templates. The curly brace percentage delimiters {%
and %}
and the text that they surround do not produce any visible output when the template is rendered.
Basic operators
Liquid includes many logical and comparison operators. You can use operators to create logic with control flow tags.
| equals |
| does not equal |
| greater than |
| less than |
| greater than or equal to |
| less than or equal to |
| logical or |
| logical and |
Contains
contains
checks for the presence of a substring inside a string. contains
can also check for the presence of a string in an array of strings. contains
can only search strings. You cannot use it to check for an object in an array of objects.
If
Executes a block of code only if a certain condition is true
.
Unless
The opposite of if
– executes a block of code only if a certain condition is not met.
Elsif / else
Adds more conditions within an if
or unless
block.
Case/when
Creates a switch statement to execute a particular block of code when a variable has a specified value. case
initializes the switch statement, and when
statements define the various conditions.
A when
tag can accept multiple values. When multiple values are provided, the expression is returned when the variable matches any of the values inside of the tag. Provide the values as a comma-separated list, or separate them using an or
operator.
An optional else
statement at the end of the case provides code to execute if none of the conditions are met.
Whitespace Control
By including hyphens in your Liquid tag, you can strip any unneeded whitespace (extra spaces) that may appear. Here is how to make this adjustment:
Comment
Allows you to leave un-rendered code inside a Liquid template. Any text within the opening and closing comment
blocks will not be printed, and any Liquid code within will not be executed.
Raw
Temporarily disables tag processing.
Assign
Creates a new named variable.
For
Repeatedly executes a block of code.
Else
Specifies a fallback case for a for
loop which will run if the loop has zero length.
Break
Causes the loop to stop iterating when it encounters the break
tag.
Continue
Causes the loop to skip the current iteration when it encounters the continue
tag.
Filters
Filters change the output of a Liquid object or variable. They are used within double curly braces {{ }}
and are separated by a pipe character |
. Multiple filters can be used on one output, and are applied from left to right.
abs
Returns the absolute value of a number. abs
will also work on a string that only contains a number.
append
Adds the specified string to the end of another string. append
can also accept a variable as its argument.
capitalize
Makes the first character of a string capitalized and converts the remaining characters to lowercase. Only the first character of a string is capitalized, so later words are not capitalized:
ceil
Rounds an input up to the nearest whole number. Liquid tries to convert the input to a number before the filter is applied.
date
Converts a timestamp into another date format.
To get the current time, pass the special word "now"
to date
. The store's default timezone, which is set in Shopify, will be used.
Modifiers can be added to now
to get a specific time in the past or future:
Yesterday
Two months from now
Valid units of time: year
, month
, day
, hour
, minute
, second
.
Date formatting
Format character | Example | Description |
---|---|---|
|
| Weekday as locale’s abbreviated name. |
|
| Weekday as locale’s full name. |
|
| Weekday as a decimal number, where 0 is Sunday and 6 is Saturday. |
|
| Day of the month as a zero-padded decimal number. |
|
| Day of the month as a decimal number. (Platform specific) |
|
| Month as locale’s abbreviated name. |
|
| Month as locale’s full name. |
|
| Month as a zero-padded decimal number. |
|
| Month as a decimal number. (Platform specific) |
|
| Year without century as a zero-padded decimal number. |
|
| Year with century as a decimal number. |
|
| Hour (24-hour clock) as a zero-padded decimal number. |
|
| Hour (24-hour clock) as a decimal number. (Platform specific) |
|
| Hour (12-hour clock) as a zero-padded decimal number. |
|
| Hour (12-hour clock) as a decimal number. (Platform specific) |
|
| Locale’s equivalent of either AM or PM. |
|
| Minute as a zero-padded decimal number. |
|
| Minute as a decimal number. (Platform specific) |
|
| Second as a zero-padded decimal number. |
|
| Second as a decimal number. (Platform specific) |
|
| Microsecond as a decimal number, zero-padded to 6 digits. |
|
| UTC offset in the form ±HHMM[SS[.ffffff]] (empty string if the object is naive). |
|
| Time zone name (empty string if the object is naive). |
|
| Day of the year as a zero-padded decimal number. |
|
| Day of the year as a decimal number. (Platform specific) |
|
| Week number of the year (Sunday as the first day of the week) as a zero-padded decimal number. All days in a new year preceding the first Sunday are considered to be in week 0. |
|
| Week number of the year (Sunday as the first day of the week) as a decimal number. All days in a new year preceding the first Sunday are considered to be in week 0. (Platform specific) |
|
| Week number of the year (Monday as the first day of the week) as a zero-padded decimal number. All days in a new year preceding the first Monday are considered to be in week 0. |
|
| Week number of the year (Monday as the first day of the week) as a decimal number. All days in a new year preceding the first Monday are considered to be in week 0. (Platform specific) |
|
| Locale’s appropriate date and time representation. |
|
| Locale’s appropriate date representation. |
|
| Locale’s appropriate time representation. |
|
| A literal '%' character. |
default
Sets a default value for any variable with no assigned value. default
will show its value if the input is nil
, false
, or empty.
divided_by
Divides a number by another number.
downcase
Makes each character in a string lowercase. It has no effect on strings which are already all lowercase.
escape
Escapes a string by replacing characters with escape sequences (so that the string can be used in a URL, for example). It doesn’t change strings that don’t have anything to escape.
escape_once
Escapes a string without changing existing escaped entities. It doesn’t change strings that don’t have anything to escape.
first
Returns the first item of an array.
floor
Rounds an input down to the nearest whole number. Liquid tries to convert the input to a number before the filter is applied.
join
Combines the items in an array into a single string using the argument as a separator.
last
Returns the last item of an array.
lstrip
Removes all whitespace (tabs, spaces, and newlines) from the left side of a string. It does not affect spaces between words.
map
Creates an array of values by extracting the values of a named property from another object.
minus
Subtracts a number from another number.
modulo
Returns the remainder of a division operation.
newline_to_br
Inserts an HTML line break (<br />
) in front of each newline () in a string.
plus
Adds a number to another number.
prepend
Adds the specified string to the beginning of another string.
remove
Removes every occurrence of the specified substring from a string.
remove_first
Removes only the first occurrence of the specified substring from a string.
replace
Replaces every occurrence of the first argument in a string with the second argument.
replace_first
Replaces only the first occurrence of the first argument in a string with the second argument.
reverse
Reverses the order of the items in an array. reverse
cannot reverse a string.
round
Rounds a number to the nearest integer or, if a number is passed as an argument, to that number of decimal places.
rstrip
Removes all whitespace (tabs, spaces, and newlines) from the right side of a string. It does not affect spaces between words.
size
Returns the number of characters in a string or the number of items in an array.
slice
Returns a substring of one character or series of array items beginning at the index specified by the first argument. An optional second argument specifies the length of the substring or number of array items to be returned. String or array indices are numbered starting from 0. If the first argument is a negative number, the indices are counted from the end of the string.
sort
Sorts items in an array in case-sensitive order.
split
Divides a string into an array using the argument as a separator. split
is commonly used to convert comma-separated items from a string to an array.
strip
Removes all whitespace (tabs, spaces, and newlines) from both the left and right sides of a string. It does not affect spaces between words.
strip_html
Removes any HTML tags from a string.
strip_newlines
Removes any newline characters (line breaks) from a string.
times
Multiplies a number by another number.
truncate
Shortens a string down to the number of characters passed as an argument. If the specified number of characters is less than the length of the string, an ellipsis (…) is appended to the string and is included in the character count.
truncate
takes an optional second argument that specifies the sequence of characters to be appended to the truncated string. By default this is an ellipsis (…), but you can specify a different sequence.
truncatewords
Shortens a string down to the number of words passed as an argument. If the specified number of words is less than the number of words in the string, an ellipsis (…) is appended to the string.
truncatewords
takes an optional second argument that specifies the sequence of characters to be appended to the truncated string. By default this is an ellipsis (…), but you can specify a different sequence.
uniq
Removes any duplicate items in an array.
upcase
Makes each character in a string uppercase. It has no effect on strings which are already all uppercase.
url_decode
Decodes a string that has been encoded as a URL.
url_encode
Converts any URL-unsafe characters in a string into percent-encoded characters. Note that url_encode
will turn a space into a +
sign instead of a percent-encoded character.
where
Creates an array including only the objects with a given property value, or any truthy value by default.
Last updated