Edit on GitHub

Liquid

Differs from Ruby Jekyll — modified

Undefined filters and tags are build errors; undefined variables render as empty. sassify, find, and find_exp are missing. Jigyll adds Shopify-style money filters (money, money_with_currency, …) that Jekyll doesn't have.

Jigyll uses the Liquid templating language to process templates, just like Jekyll. All of the standard Liquid tags and filters are supported.

Error handling

Differs from Jekyll. Liquid error behavior is fixed (Jekyll's liquid: config options have no effect):

  • An undefined filter or unknown tag is a build error.
  • An undefined variable renders as empty, silently.

Jekyll filters

Jigyll implements Jekyll's filters, including:

URLs relative_url, absolute_url
Dates date_to_string, date_to_long_string, date_to_rfc822, date_to_xmlschema
Selection where, where_exp, group_by, group_by_exp, sort, uniq, sample
Escaping xml_escape, cgi_escape, uri_escape
Text markdownify, smartify, slugify, normalize_whitespace, number_of_words, array_to_sentence_string, to_integer
Data jsonify, inspect
Sass scssify

See the Jekyll filter reference for what each does.

Differs from Jekyll. Not supported:

  • sassify — a warning is printed and the input passes through unchanged. scssify works.
  • find and find_exp — use where/where_exp and take first.
  • where with nil/emptywhere compares stringified values only; Jekyll 4's nil/empty detection is not implemented.
  • slugify modes ascii, latin, and nonedefault, raw, and pretty work.

Jekyll tags

The Jekyll tags are all available:

  • include / include_relative — with parameters ({% include note.html content="..." %}), theme includes, and include-loop detection.
  • highlight — chroma-based syntax highlighting with Rouge-compatible CSS classes; the optional linenos argument works: {% highlight ruby linenos %} ... {% endhighlight %}
  • link / post_url — resolve a source path to its permalink, with build-time validation (a missing target fails the build, as in Jekyll).
  • raw and all standard control-flow tags.

Differs from Jekyll. link and post_url take a literal path only — Jekyll 4.5's variable interpolation ({% post_url {{ post.slug }} %}) is not supported.

Money filters

Jigyll-only. These Shopify-style filters have no Ruby Jekyll counterpart.

Prices are stored as an integer number of cents, following the Shopify convention — 1000 means $10.00:

{{ 1000 | money }}                          → $10.00
{{ 1000 | money_with_currency }}            → $10.00 USD
{{ 1000 | money_without_currency }}         → 10.00
{{ 1000 | money_without_trailing_zeros }}   → $10
{{ 1099 | money_without_trailing_zeros }}   → $10.99
{{ 123456 | money }}                        → $1,234.56

Floats and numeric strings are accepted and rounded to the nearest cent; non-numeric input renders as empty. Configure the currency in _config.yml:

currency: USD          # code shown by money_with_currency (default: USD)
currency_symbol: "$"   # symbol prefix (default: $)