diff --git a/.changeset/bright-bears-wonder.md b/.changeset/bright-bears-wonder.md new file mode 100644 index 000000000..aae273a35 --- /dev/null +++ b/.changeset/bright-bears-wonder.md @@ -0,0 +1,5 @@ +--- +'@shopify/prettier-plugin-liquid': patch +--- + +Respect `prettier-ignore` directives in Jinja comments. diff --git a/packages/prettier-plugin-liquid/src/printer/utils/node.ts b/packages/prettier-plugin-liquid/src/printer/utils/node.ts index 5341de3e8..8442a293d 100644 --- a/packages/prettier-plugin-liquid/src/printer/utils/node.ts +++ b/packages/prettier-plugin-liquid/src/printer/utils/node.ts @@ -155,10 +155,22 @@ export function isPrettierIgnoreLiquidNode(node: LiquidHtmlNode | undefined): no ); } +export function isPrettierIgnoreJinjaNode(node: LiquidHtmlNode | undefined): node is TextNode { + return ( + !!node && + node.type === NodeTypes.TextNode && + /^\s*\{#\s*prettier-ignore(?=\s|#)[\s\S]*?#\}\s*$/.test(node.value) + ); +} + export function isPrettierIgnoreNode( node: LiquidHtmlNode | undefined, -): node is HtmlComment | LiquidTag { - return isPrettierIgnoreLiquidNode(node) || isPrettierIgnoreHtmlNode(node); +): node is HtmlComment | LiquidTag | TextNode { + return ( + isPrettierIgnoreLiquidNode(node) || + isPrettierIgnoreHtmlNode(node) || + isPrettierIgnoreJinjaNode(node) + ); } export function hasPrettierIgnore(node: LiquidHtmlNode) { diff --git a/packages/prettier-plugin-liquid/src/test/liquid-prettier-ignore/fixed.liquid b/packages/prettier-plugin-liquid/src/test/liquid-prettier-ignore/fixed.liquid index 5d40c2cef..392db4eb5 100644 --- a/packages/prettier-plugin-liquid/src/test/liquid-prettier-ignore/fixed.liquid +++ b/packages/prettier-plugin-liquid/src/test/liquid-prettier-ignore/fixed.liquid @@ -45,3 +45,8 @@ printWidth: 1 {%capture foo%}{% for x in (0 .. 1) %}{% cycle a,b,c %}{% endfor %}{%endcapture%} {{- 'hi' }} + +It should respect the jinja prettier-ignore comment +printWidth: 1 +{# prettier-ignore #} +{% cycle a,b,c %} diff --git a/packages/prettier-plugin-liquid/src/test/liquid-prettier-ignore/index.liquid b/packages/prettier-plugin-liquid/src/test/liquid-prettier-ignore/index.liquid index 58733aa62..1a4d87d9c 100644 --- a/packages/prettier-plugin-liquid/src/test/liquid-prettier-ignore/index.liquid +++ b/packages/prettier-plugin-liquid/src/test/liquid-prettier-ignore/index.liquid @@ -42,3 +42,8 @@ printWidth: 1 {% # prettier-ignore %} {%capture foo%}{% for x in (0 .. 1) %}{% cycle a,b,c %}{% endfor %}{%endcapture%}{{ 'hi' }} + +It should respect the jinja prettier-ignore comment +printWidth: 1 +{# prettier-ignore #} +{% cycle a,b,c %}