Skip to content

New "spaceless" alternative mode where whitespace is opt-in with {#+. #4723

Description

@donquixote

Current situation

Currently, adding a - to a twig tag causes whitespace removal.
E.g. {#- some comment #}, here whitespace is removed before but not after the comment.

Without the -, a single whitespace between twig tags is removed, but a double line break \n\n is not.

Proposal

I would like to propose a new mechanism that turns this around.

We introduce a new mode-switching twig tag {% spaceremoved %}, which would typically be placed at the top of a template.
(I would call it "spaceless" but that term now has a history. Open to suggestions.)

This allows to opt-in to this mechanism per template or per snippet, thus avoiding BC problems.

When this mode is enabled:

  • A twig tag without - is treated as if it had -. E.g. {# some comment #} is treated like {#- some comment #}.
  • A twig tag with + is treated like a regular tag without -. So, {#+ some comment +#} is treated like {# some comment #}.

Example

{% spaceremoved %} 
hel {# remove space before and after #} lo {#+ keep space before #} world

This is equivalent to

hel {#- remove space before and after -#} lo {# keep space before -#} world

which prints as

hello world

See also

I found

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions