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

Rob van Dalen updated VELOCITY-919:
-----------------------------------
    Description: 
I am not sure if this is a bug but we have the following situation.

We have a recognition application of recognizing text and decorating the text.

When we putting the below input text to the application:
 *Input for the application:*
{code:none}
see ​art. 1​ of the WW and then some other text
{code}
_Just before the text *art. 1* there is a Zero-Width space._

The application will make the text like this:
 *Input for the VelocityEngine:*
{code:none}
see ​${decorations[0]} and then some other text
{code}
_Just before the text *$\{decorations[0]}* there still is a Zero-Width space. 
because our application only changed *art.1 of the WW* into 
*$\{decorations[0]}*_

When we put this text to the VelocityEngine together with the decoration 
template and a list of laws in the context, the engine is changing my text. 
It's removing the Zero-Width Space.
 Just before the VelocityEngine is using the text and the template, 
VelocityEngine is removing the Zer0-Width Space

Velocity should only do some markup and not change the original input text.

*decoration.vm:*
{code:none}
#set($decorations = [])
#foreach($type in $annotationsMap.keySet())
    #foreach($citation in $annotationsMap.get($type))
        #set($hideAddResult = $decorations.add("##
<verwijzing>$citation</verwijzing>##
"))
    #end
#end
{code}
This is a pace of Java code:
{code:java}
Path templateFile = TEMPLATE_FILE.toPath();

VelocityEngine velocityEngine = new VelocityEngine();
Path pathName = templateFile.getParent();
velocityEngine.setProperty(FILE_RESOURCE_LOADER_PATH, 
pathName.toFile().getAbsolutePath());
velocityEngine.init();

Map<String, List<String>> annotationsMap = getAnnotationsMap();

StringBuilder templateStringBuilder = new StringBuilder("see 
\u200B${decorations[0]} and then some other text");

templateStringBuilder.insert(0, "#parse(\"" + templateFile.getFileName() + 
"\")");

VelocityContext context = new VelocityContext();
context.put("escape", new EscapeTool());
// annotationsMap is put in context as a whole, so that template script can 
decide what to do with different CitationTypes
context.put("annotationsMap", annotationsMap);

StringWriter writer = new StringWriter();

velocityEngine.evaluate(context, writer, templateFile.getFileName().toString(), 
templateStringBuilder.toString());
{code}
The output of this application is:
{code:html}
see <verwijzing>art. 1​ of the WW</verwijzing> and then some other text
{code}
But just before *<verwijzing>* i expected the Zero-Width Space, but it's gone. 
So somewhere in the methode evaluate of the VelocityEngine this character is 
removed, because it's still present in the template text *"see 
​$\{decorations[0]} and then some other text"*

Please help. 

  was:
I am not sure if this is a bug but we have the following situation.

We have a recognition application of recognizing text and decorating the text.

When we putting the below input text to the application:
 *Input for the application:*
{code:none}
see ​art. 1​ of the WW and then some other text
{code}
_Just before the text *art. 1* there is a Zero-Width space._

The application will make the text like this:
 *Input for the VelocityEngine:*
{code:none}
see ​${annotationsMap[0]} and then some other text
{code}
_Just before the text *$\{annotationsMap[0]}* there still is a Zero-Width 
space. because our application only changed *art.1 of the WW* into 
*$\{annotationsMap[0]}*_

When we put this text to the VelocityEngine together with the decoration 
template and a list of laws in the context, the engine is changing my text. 
It's removing the Zero-Width Space.
 Just before the VelocityEngine is using the text and the template, 
VelocityEngine is removing the Zer0-Width Space

Velocity should only do some markup and not change the original input text.

*decoration.vm:*
{code:none}
#foreach($type in $annotationsMap.keySet())
    #foreach($citation in $annotationsMap.get($type))
        <verwijzing>$citation</verwijzing>
    #end
#end
{code}
This is a pace of Java code:
{code:java}
VelocityEngine velocityEngine = new VelocityEngine();
if (exists(pathName.resolve(GLOBAL_MACRO_FILENAME))) {
    velocityEngine.setProperty(VM_LIBRARY, GLOBAL_MACRO_FILENAME);
}
velocityEngine.init();

VelocityContext context = new VelocityContext();
context.put("escape", new EscapeTool());
// annotationsMap is put in context as a whole, so that template script can 
descide what to do with different CitationTypes
context.put("annotationsMap", annotationsMap);

StringWriter writer = new StringWriter();

velocityEngine.evaluate(context, writer, "decoration.vm", "see 
​${annotationsMap[0]} and then some other text");
{code}
The output of this application is:
{code:html}
see <verwijzing>art. 1​ of the WW</verwijzing> and then some other text
{code}
But just before *<verwijzing>* i expected the Zero-Width Space, but it's gone. 
So somewhere in the methode evaluate of the VelocityEngine this character is 
removed, because it's still present in the template text *"see 
​$\{annotationsMap[0]} and then some other text"*

Please help. 


> Velocity is removing the Zero-Width space from the text
> -------------------------------------------------------
>
>                 Key: VELOCITY-919
>                 URL: https://issues.apache.org/jira/browse/VELOCITY-919
>             Project: Velocity
>          Issue Type: Bug
>          Components: Engine
>    Affects Versions: 2.1
>            Reporter: Rob van Dalen
>            Priority: Major
>
> I am not sure if this is a bug but we have the following situation.
> We have a recognition application of recognizing text and decorating the text.
> When we putting the below input text to the application:
>  *Input for the application:*
> {code:none}
> see ​art. 1​ of the WW and then some other text
> {code}
> _Just before the text *art. 1* there is a Zero-Width space._
> The application will make the text like this:
>  *Input for the VelocityEngine:*
> {code:none}
> see ​${decorations[0]} and then some other text
> {code}
> _Just before the text *$\{decorations[0]}* there still is a Zero-Width space. 
> because our application only changed *art.1 of the WW* into 
> *$\{decorations[0]}*_
> When we put this text to the VelocityEngine together with the decoration 
> template and a list of laws in the context, the engine is changing my text. 
> It's removing the Zero-Width Space.
>  Just before the VelocityEngine is using the text and the template, 
> VelocityEngine is removing the Zer0-Width Space
> Velocity should only do some markup and not change the original input text.
> *decoration.vm:*
> {code:none}
> #set($decorations = [])
> #foreach($type in $annotationsMap.keySet())
>     #foreach($citation in $annotationsMap.get($type))
>         #set($hideAddResult = $decorations.add("##
> <verwijzing>$citation</verwijzing>##
> "))
>     #end
> #end
> {code}
> This is a pace of Java code:
> {code:java}
> Path templateFile = TEMPLATE_FILE.toPath();
> VelocityEngine velocityEngine = new VelocityEngine();
> Path pathName = templateFile.getParent();
> velocityEngine.setProperty(FILE_RESOURCE_LOADER_PATH, 
> pathName.toFile().getAbsolutePath());
> velocityEngine.init();
> Map<String, List<String>> annotationsMap = getAnnotationsMap();
> StringBuilder templateStringBuilder = new StringBuilder("see 
> \u200B${decorations[0]} and then some other text");
> templateStringBuilder.insert(0, "#parse(\"" + templateFile.getFileName() + 
> "\")");
> VelocityContext context = new VelocityContext();
> context.put("escape", new EscapeTool());
> // annotationsMap is put in context as a whole, so that template script can 
> decide what to do with different CitationTypes
> context.put("annotationsMap", annotationsMap);
> StringWriter writer = new StringWriter();
> velocityEngine.evaluate(context, writer, 
> templateFile.getFileName().toString(), templateStringBuilder.toString());
> {code}
> The output of this application is:
> {code:html}
> see <verwijzing>art. 1​ of the WW</verwijzing> and then some other text
> {code}
> But just before *<verwijzing>* i expected the Zero-Width Space, but it's 
> gone. So somewhere in the methode evaluate of the VelocityEngine this 
> character is removed, because it's still present in the template text *"see 
> ​$\{decorations[0]} and then some other text"*
> Please help. 



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

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

Reply via email to