================================================================================
Literal
================================================================================

<html>
  {{ 'string' }}
</html>

--------------------------------------------------------------------------------

(program
  (template_content)
  (string)
  (template_content))

================================================================================
Filter
================================================================================

<html>
  {{ 'string two' | split: " " }}
</html>

--------------------------------------------------------------------------------

(program
  (template_content)
  (filter
    body: (string)
    name: (identifier)
    (argument_list
      (string)))
  (template_content))

================================================================================
Filter with variable
================================================================================

<html>
  {%assign space = " " %}
  <div>{{ 'string two' | split: space }}</div>
</html>

--------------------------------------------------------------------------------

(program
  (template_content)
  (assignment_statement
    variable_name: (identifier)
    value: (string))
  (template_content)
  (filter
    body: (string)
    name: (identifier)
    (argument_list
      (identifier)))
  (template_content))

================================================================================
Many filters
================================================================================

<html>
  {{ 'string two' | split: space | first }}
</html>

--------------------------------------------------------------------------------

(program
  (template_content)
  (filter
    body: (filter
      body: (string)
      name: (identifier)
      (argument_list
        (identifier)))
    name: (identifier))
  (template_content))

================================================================================
Filters with many arguments
================================================================================

<html>
  {% assign kitchen_products = products | where: "type", "kitchen" %}
</html>

--------------------------------------------------------------------------------

(program
  (template_content)
  (assignment_statement
    variable_name: (identifier)
    value: (filter
      body: (identifier)
      name: (identifier)
      (argument_list
        (string)
        (string))))
  (template_content))

================================================================================
Filters argument hash
================================================================================

<html>
  {{ display_price | default: true, allow_false: true }}
</html>

--------------------------------------------------------------------------------

(program
  (template_content)
  (filter
    body: (identifier)
    name: (identifier)
    (argument_list
      (boolean)
      (argument
        key: (identifier)
        value: (boolean))))
  (template_content))

================================================================================
Filters precedence
================================================================================

<html>
  {{ "Ground control to Major Tom." | split: "" | reverse | join: "" }}
</html>

--------------------------------------------------------------------------------

(program
  (template_content)
  (filter
    body: (filter
      body: (filter
        body: (string)
        name: (identifier)
        (argument_list
          (string)))
      name: (identifier))
    name: (identifier)
    (argument_list
      (string)))
  (template_content))

================================================================================
Method Call
================================================================================

<html>
  {{ page.title }}
</html>

--------------------------------------------------------------------------------

(program
  (template_content)
  (access
    receiver: (identifier)
    property: (identifier))
  (template_content))

================================================================================
Compound Method Call With Filter
================================================================================

<html>
  {{ data["page"].title | reverse}}
</html>

--------------------------------------------------------------------------------

(program
  (template_content)
  (filter
    body: (access
      receiver: (access
        receiver: (identifier)
        property: (string))
      property: (identifier))
    name: (identifier))
  (template_content))

================================================================================
Render
================================================================================

<html>
  {% render 'filename' %}
</html>

--------------------------------------------------------------------------------

(program
  (template_content)
  (render_statement
    file: (string))
  (template_content))

================================================================================
Render Loop
================================================================================

<html>
  {% render 'filename' for array as item %}
</html>

--------------------------------------------------------------------------------

(program
  (template_content)
  (render_statement
    file: (string)
    iteration: (identifier)
    item: (identifier))
  (template_content))

================================================================================
Render With
================================================================================

<html>
  {% render 'filename' with object%}
</html>

--------------------------------------------------------------------------------

(program
  (template_content)
  (render_statement
    file: (string)
    with: (identifier))
  (template_content))

================================================================================
Render Variable
================================================================================

<html>
  {% render 'filename', variable: value %}
</html>

--------------------------------------------------------------------------------

(program
  (template_content)
  (render_statement
    file: (string)
    arguments: (argument_list
      (argument
        key: (identifier)
        value: (identifier))))
  (template_content))

================================================================================
Include
================================================================================

<html>
  {% include 'filename' %}
</html>

--------------------------------------------------------------------------------

(program
  (template_content)
  (include_statement
    (string))
  (template_content))

================================================================================
Custom Tag
================================================================================

<html>
  {% something 'filename' %}
</html>

--------------------------------------------------------------------------------

(program
  (template_content)
  (custom_unpaired_statement
    (string))
  (template_content))

================================================================================
Include Jeykll
================================================================================

{% include dir/note.html content="This is my sample note." file=download_note %}

--------------------------------------------------------------------------------

(program
  (include_statement
    (string)
    (identifier)
    (string)
    (identifier)
    (identifier))
  (template_content))

================================================================================
Include Jeykll with Variable
================================================================================

{% include {{ some.file }} content="This is my sample note." file=download_note %}

--------------------------------------------------------------------------------

(program
  (include_statement
    (access
      (identifier)
      (identifier))
    (identifier)
    (string)
    (identifier)
    (identifier))
  (template_content))

================================================================================
Include Jeykll with bracket
================================================================================

{% include {dir/{note.html} content="This is my sample note." file=download_note %}

--------------------------------------------------------------------------------

(program
  (include_statement
    (string)
    (identifier)
    (string)
    (identifier)
    (identifier))
  (template_content))

================================================================================
Include Jeykll with bracket 2
================================================================================

{% include d{ir/{note.html} content="This is my sample note." file=download_note %}

--------------------------------------------------------------------------------

(program
  (include_statement
    (string)
    (identifier)
    (string)
    (identifier)
    (identifier))
  (template_content))

================================================================================
Include Jeykll with Error
:error
================================================================================
{% include dir/{{note %}
--------------------------------------------------------------------------------

(program
  (include_statement
    (string))
  (ERROR
    (identifier)))
