Liquid Snippets by ALSEL
🧰 ユーティリティ上級

Liquid制御フロー構文のフォーマット例

for・if・unless・case などの Liquid 制御フロー構文と、テキストノード・要素ノードの組み合わせにおける正しいインデント・改行ルールを示すテストコード。Prettier Liquid プラグインの期待動作を定義している。

用途
Liquid コードフォーマッタ・リンタを開発する際に、制御フロー分岐の整形ルールが正しく実装されているか検証するテストケース。
設置場所
テーマ開発の Prettier 設定検証時に参照。実装側では packages/prettier-plugin-liquid/src/test/liquid-control-flow-branches/fixed.liquid として存在し、Liquid ファイルの自動フォーマットロジックのユニットテスト入力として使用される。
注意点
このファイルは Prettier Liquid プラグイン開発者向けの公式テストファイルであり、ストアのテーマ実装では直接使用しない。Liquid 構文の複雑な分岐時にテキストがあるかないかで改行ルールが変わる(テキストあり→段落型、テキストなし→ブロック型)ため、自動フォーマッタ導入時に動作確認する際の参考になる。ホワイトスペース制御(`{%- ... -%}`)の挙動も明記されているので、出力ファイルの改行が意図と異なるときはこのテストケースの対応ルールを確認する。
タグ:liquidformattercontrol-flowprettiertesting

コード

81 行 / liquid
<div>
  {% for a in b %}
    <span>{{ a }}</span>
  {% else %}
    <span>Hello world!</span>
  {% endfor %}
</div>

<div>
  {% if condition %}
    <span>{{ condition }}</span>
  {% else %}
    <span>Hello world!</span>
  {% endif %}
</div>

<div>
  {% unless condition %}
    <span>Hello world!</span>
  {% elsif other %}
    <span>{{ condition }}</span>
  {% endunless %}
</div>

It should indent when statements and their children
<div>
  {% case pastry %}
    {% when 'oopsie' %}

    {% when 'croissant' %}
      Mmmm
    {% when 'muffin' %}
      Yea. Alright.
    {% when 'veggie' %}
      That's not a pastry!
    {% else %}
      What do you want?
  {% endcase %}
</div>

When there's a TextNode child, it should format the children as a paragraph
<div>
  {% if a %}
    hello {{ world }}!
  {% elsif b %}
    {% if x %}Greetings{% else %}Hello{% endif %}, friend!
  {% endif %}
</div>

When there's aren't TextNodes children, it should break every child on a new
line.
<section>
  {% if a %}
    <div>Hello</div>
    <div>content</div>
  {% elsif b %}
    {% if greeting %}
      <div>hello</div>
    {% endif %}
    <div>content</div>
  {% endif %}
</section>

When there's a new line in the input, there should be a new line in the output.
{% if a -%}
  hello
{% endif %}
{% if a -%}
  hello
{%- elsif b -%}
  b
{%- else -%}
  c
{% endif %}

Deeply nested tags should break line
{% if greeting %}hello world{% endif %}
{% if greeting -%}
  <span>hello world</span>
{%- endif %}

出典・ライセンス

License:
MIT

このコードは Shopify 著作の MIT ライセンスソースです。 原本の著作権は Shopify が保有します。日本語訳は ALSEL によるものです。

関連項目

🧰 ユーティリティ初級

コメント後の空白フォーマット

Liquid コメントタグの直後に改行や空白がある場合の正しいフォーマット例。prettier-plugin-liquid によるコード整形テストケース。

📁 theme-tools·MIT·6
🧰 ユーティリティ初級

Liquidコメントのフォーマット

Liquid のコメントタグ直後に改行がある場合の正しいフォーマット例。prettier-plugin-liquid による自動整形テストケース。

📁 theme-tools·MIT·6
🧰 ユーティリティ初級

セクション呼び出しの改行制御

{% sections %} タグの前後の空白制御(ホワイトスペース削除演算子 `{%-` と `-%}` の使い方)を示すサンプル。Prettier による Liquid コードフォーマットで改行が崩れないことを確認するテストケース。

📁 theme-tools·MIT·7
🧰 ユーティリティ初級

Prettier フォーマッタの HTML リスト整形テスト

Prettier Liquid プラグインが HTML のリスト要素(ul / ol)をどのように整形・改行するかをテストするサンプルコード。短い行は1行、長い行は複数行に自動で分割される動作を検証する。

📁 theme-tools·MIT·8
🧰 ユーティリティ上級

Vue.js属性のLiquid整形

Vue.js のディレクティブ(@click、:class など)を含む Liquid コードを Prettier で正しく整形するテストケース。spec 準拠の属性名を保持したまま、改行・インデント処理を行う。

📁 theme-tools·MIT·9
🧰 ユーティリティ上級

sections タグのフォーマット

Liquid の sections タグ構文と、Prettier によるフォーマット時の動作を示すテストファイル。タグ名の直前・直後の空白や改行が保持される仕様を確認するサンプル。

📁 theme-tools·MIT·9