4.0 KiB
4.0 KiB
bDS Liquid Feature Inventory
Inventoried from the 12 default templates in the TypeScript app (src/main/engine/templates/).
Template Files Analyzed
single-post.liquid(main)post-list.liquid(main)not-found.liquid(main)macros/gallery.liquidmacros/youtube.liquidmacros/vimeo.liquidmacros/photo-archive.liquidmacros/tag-cloud.liquidpartials/head.liquidpartials/menu.liquidpartials/menu-items.liquidpartials/language-switcher.liquid
Tags Used
| Tag | Used In |
|---|---|
if / endif |
9 templates |
elsif |
post-list |
else |
7 templates |
for / endfor |
7 templates |
assign |
4 templates (not-found, post-list, head, single-post) |
render |
5 templates (menu, menu-items, not-found, post-list, single-post) |
NOT Used
unless, case/when, capture, layout, include, comment, raw, increment, decrement, tablerow, cycle
Filters Used
| Filter | Type | Signature |
|---|---|---|
escape |
Built-in | | escape |
default |
Built-in | | default: value |
append |
Built-in | | append: string |
url_encode |
Built-in | | url_encode |
i18n |
Custom | | i18n: language — translation lookup by key and language |
markdown |
Custom | | markdown: post.id, post_data_json_by_id, canonical_post_path_by_slug, canonical_media_path_by_source_path, language, language_prefix — markdown-to-HTML with macro expansion and link resolution (6 args) |
NOT Used
date, truncate, split, join, where, group_by, map, sort, reverse, size (as pipe filter), strip, strip_html, downcase, upcase, replace, remove, first, last, abs, ceil, floor, round, plus, minus, times, divided_by, modulo
Operators
| Operator | Example |
|---|---|
== |
item.href == '#', archive_context.kind == 'tag' |
> |
menu_items.size > 0, blog_languages.size > 1 |
and |
menu_items and menu_items.size > 0 |
or |
archive_context.kind == 'tag' or archive_context.kind == 'category' |
blank |
canonical_post_href == blank (nil/empty check) |
| bare truthiness | {% if html_theme_attribute %}, {% if caption %} |
NOT Used
!=, <, <=, >=, contains
Property Access Patterns
| Pattern | Examples |
|---|---|
| Dot notation | archive_context.kind, post.title, item.media_path, lang.is_current |
.size property |
menu_items.size, items.size, post_categories.size |
| Bracket notation (hash/map lookup) | canonical_post_path_by_slug[post.slug], tag_color_by_name[tag] |
Whitespace Stripping
{%- -%} used in 3 macro templates only: photo-archive, gallery, tag-cloud.
For-Loop Features
| Feature | Used? |
|---|---|
Basic for x in collection |
YES |
Nested for loops |
YES (photo-archive, post-list) |
Recursive render in loop |
YES (menu-items renders itself for children) |
forloop.first / forloop.last |
NO |
limit / offset |
NO |
reversed |
NO |
Render Tag Usage
- Uses named parameter passing:
{% render 'partials/menu-items', items: menu_items, include_calendar: true, language: language %} - Recursive self-render: menu-items calls
render 'partials/menu-items'for nested children - Partial paths use forward-slash notation:
'partials/head','partials/menu'
Two-Step Dynamic i18n Keys
{% assign month_key = 'render.month.' | append: archive_context.month %} then {{ month_key | i18n: language }}
Scope Summary
The Rust Liquid implementation needs approximately 35% of the full specification:
- Tags:
if/elsif/else,for,assign,render(notinclude) - Built-in filters:
escape,default,append,url_encode - Custom filters:
i18n(key + language),markdown(content + 6 args) - Operators:
==,>,and,or, truthiness,blank - Access: dot notation,
.sizeproperty, bracket notation for hash/map lookups - Whitespace stripping:
{%- -%}support required