[ 
https://issues.apache.org/jira/browse/VELOCITY-623?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12638631#action_12638631
 ] 

Byron Foster commented on VELOCITY-623:
---------------------------------------

My thoughts are that no, there is no particular reason.  Macro's are a problem 
because the parser handles the escaping such that no node is even created for 
something like "\#abc() which makes it impossible to do the post parse 
processing that can be done with references.  If it wasn't for this I would 
have also "fixed" the macro escaping for strict mode :)  To change the behavior 
of macro escaping the parser will have to be changed, However, not a major 
change... 

In allot of ways strict mode along with sane escaping rules really simplifies 
things because then you either have a valid reference with no escape processing 
necessary, or a text node (maybe actually, or essentially).  As it stands the 
ASTReference Node has allot of member fields dedicated to various escape 
gymnastics.  I'm not even sure what all the bang escaping is for.

I think were you are going with this is that it would be nice to have a 
property that modifies the behavior of escaping, and perhaps tests how it will 
work in the future, in a python future sort of way.  If this is the case it 
would be good to get it all right.  Anyway, I'll look into it some more.






> Modify escape behavior in strict mode
> -------------------------------------
>
>                 Key: VELOCITY-623
>                 URL: https://issues.apache.org/jira/browse/VELOCITY-623
>             Project: Velocity
>          Issue Type: New Feature
>          Components: Engine
>    Affects Versions: 1.6
>            Reporter: Byron Foster
>         Attachments: StrictEscapeWithProperty.patch
>
>
> provides another property 'runtime.references.strict.escape' that when true 
> modifies the behavior of escaping a reference when in strict mode, see 
> discussion VELOCITY-618.  The behavior is a as follows:
> $abc = <exception>    -  If $abc is not defined
> \$abc = $abc 
> \\$abc = <exception>  - If $abc is  not defined
> \\\$abc = \$abc
> The backslash in front of a reference always prevents that reference from 
> being evaluated, and the backslash is removed. This is true wether a 
> reference is in the context or not.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to