[ 
https://issues.apache.org/jira/browse/VELOCITY-253?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claude Brisson resolved VELOCITY-253.
-------------------------------------
    Resolution: Implemented
      Assignee: Claude Brisson

Implemented, with a switch, and without having to parse the AST tree: at 
parsing, the whitespace/tab/endline characters surrounding directives, 
if/foreach statements, macros and inner blocks are stored as nodes' prefix and 
postfix. Then each node chooses whether or not to display its prefix or 
postfix, based on the choosen gobbling mode.

> Enhance whitespace gobbling
> ---------------------------
>
>                 Key: VELOCITY-253
>                 URL: https://issues.apache.org/jira/browse/VELOCITY-253
>             Project: Velocity
>          Issue Type: Wish
>          Components: Engine
>    Affects Versions: 1.0-Release
>         Environment: Operating System: other
> Platform: Other
>            Reporter: Christoph Reck
>            Assignee: Claude Brisson
>             Fix For: 2.x
>
>
> I expect that when adding velocity markup to an existing text file
> to not affect the spacing in the output. This includes indented #foreach
> directives and inner indented #if/#set/#macro directives.
> So the rule I proposed was to allow adding velocity markup, one per line,
> and still have the same output - e.g. add an #if statement around
> existing text to conditionally mask it out. Or add an #foreach around
> a table row and be able to repeat the body with dynamic data, etc.
> As sonn as a directive is placed wihtin other text in the same line, 
> any whitespace around it should remain untouched.
> If a line is looks like this:
>   DirectiveLine ::= LineEnd TabsAndSpaces? Directive TabsAndSpaces? LineEnd
>   TabsAndSpaces ::= (#x20 | #x09)+
>   LineEnd       ::= StartOfStream | ((#x0D #x0A) | #x0D | #x0A) | EndOfStream
> then the first "TabsAndSpaces?" and the closing "TabsAndSpaces? LineEnd"
> should be gobbled. (Note that it supports multiline directives, that is
> why "DirectiveLine" is not simply "Line".) If you whant the first
> "LineEnd" to be gobbled prepend a ## before it (makes the EOL part of 
> the previous line!).
> This has been an isse since velocity birth and discussed in many 
> user and developer threads. Some users agree with my proposals,
> some say that velocity sould not touch any whitespaces and a 
> code formatter should be run after the template rendering.
> The proposal is not 100% BC, but a switch could allow the classic 
> style (by default), or to pass all whitespaces.
> A new directive could be created to control the gobbling for 
> the enclosed parts within a template.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@velocity.apache.org
For additional commands, e-mail: dev-h...@velocity.apache.org

Reply via email to