Shopify / prettier-plugin-liquid

Prettier Liquid/HTML plugin
https://npm.im/@shopify/prettier-plugin-liquid
MIT License
93 stars 15 forks source link

Code inside capture tag will not be formatted #139

Closed codebaas closed 1 year ago

codebaas commented 1 year ago

Describe the bug Code inside the {%- capture -%} tag will not be formatted.

Unformatted source

    <div class="text-primary-300 flex no-underline">Lorem ipsum dolor sit amet, consectetur adipiscing elit. In finibus ipsum gravida iaculis pretium. </div>
    {%- capture variable -%}
      <div class="text-primary-300 flex no-underline">Lorem ipsum dolor sit amet, consectetur adipiscing elit. In finibus ipsum gravida iaculis pretium. </div>
    {%- endcapture -%}

Expected output

  <div class="text-primary-300 flex no-underline">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. In finibus ipsum gravida iaculis pretium. 
  </div>
    {%- capture variable -%}
      <div class="text-primary-300 flex no-underline">
         Lorem ipsum dolor sit amet, consectetur adipiscing elit. In finibus ipsum gravida iaculis pretium. 
      </div>
    {%- endcapture -%}

Actual output

   <div class="text-primary-300 flex no-underline">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. In finibus ipsum gravida iaculis pretium. 
  </div>
    {%- capture variable -%}
      <div class="text-primary-300 flex no-underline">Lorem ipsum dolor sit amet, consectetur adipiscing elit. In finibus ipsum gravida iaculis pretium.</div>
    {%- endcapture -%}

Debugging information

charlespwd commented 1 year ago

Yep that's because capture is space and identation sensitive. Reformating the contents changes the value of the variable. The formatter shouldn't do that per our first principle.

codebaas commented 1 year ago

Thanks! That makes sense!