| @@ -61,6 +61,9 @@ Other changes: | |||
| removed from the JDK. | |||
| Bugzilla Report 59855 | |||
| * added a new <native2asciifilter> filter that can perform non-ASCII | |||
| to Unicode-escape conversions. | |||
| Changes from Ant 1.9.6 TO Ant 1.9.7 | |||
| =================================== | |||
| @@ -1143,6 +1143,7 @@ and \\. | |||
| <a href="#ignoreblank">IgnoreBlank</a><br> | |||
| <a href="#filterdeletecharacters">DeleteCharacters</a><br> | |||
| <a href="#uniqfilter">UniqFilter</a><br> | |||
| <a href="#native2asciifilter">Native2AsciiFilter</a><br> | |||
| </p> | |||
| The following string filters are provided by the optional distribution. | |||
| @@ -1487,6 +1488,39 @@ This suppresses duplicate lines. | |||
| </tokenfilter> | |||
| </pre></blockquote> | |||
| <p><b><em><a name="native2asciifilter">Native2AsciiFilter</a></em></b></p> | |||
| <p>Uses the "builtin" implementation of | |||
| the <a href="../Tasks/native2ascii.html">native2ascii</a> task.</p> | |||
| <p>Replaces non-ascii characters by their Unicode-escapes or | |||
| vice-versa. <em>Since Ant 1.9.8</em>.</p> | |||
| <p>This filter may be used directly within a filterchain.</p> | |||
| <table cellSpacing=0 cellPadding=2 border=1> | |||
| <tr> | |||
| <td vAlign=top><b>Attribute</b></td> | |||
| <td vAlign=top><b>Description</b></td> | |||
| <td vAlign=top align="center"><b>Required</b></td> | |||
| </tr> | |||
| <tr> | |||
| <td vAlign=top>reverse</td> | |||
| <td vAlign=top>Reverse the sense of the conversion, | |||
| i.e. convert from ASCII to native.</td> | |||
| <td vAlign=top align="center">No</td> | |||
| </tr> | |||
| </table> | |||
| <h4>Example:</h4> | |||
| <p>This replaces all non-ASCII characters by their Unicode-escapes.</p> | |||
| <blockquote><pre> | |||
| <tokenfilter> | |||
| <native2asciifilter/> | |||
| </tokenfilter> | |||
| </pre></blockquote> | |||
| <p><b><em><a name="scriptfilter">ScriptFilter</a></em></b></p> | |||
| This is an optional filter that executes a script in a | |||
| <a href="http://jakarta.apache.org/bsf" target="_top">Apache BSF</a> | |||
| @@ -140,5 +140,7 @@ | |||
| classname="org.apache.tools.ant.filters.SortFilter"/> | |||
| <componentdef name="uniqfilter" onerror="ignore" | |||
| classname="org.apache.tools.ant.filters.UniqFilter"/> | |||
| <componentdef name="native2asciifilter" onerror="ignore" | |||
| classname="org.apache.tools.ant.filters.Native2AsciiFilter"/> | |||
| </antlib> | |||
| @@ -0,0 +1,47 @@ | |||
| /* | |||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||
| * contributor license agreements. See the NOTICE file distributed with | |||
| * this work for additional information regarding copyright ownership. | |||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||
| * (the "License"); you may not use this file except in compliance with | |||
| * the License. You may obtain a copy of the License at | |||
| * | |||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||
| * | |||
| * Unless required by applicable law or agreed to in writing, software | |||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
| * See the License for the specific language governing permissions and | |||
| * limitations under the License. | |||
| * | |||
| */ | |||
| package org.apache.tools.ant.filters; | |||
| import org.apache.tools.ant.util.Native2AsciiUtils; | |||
| /** | |||
| * A filter that performs translations from characters to their | |||
| * Unicode-escape sequences and vice-versa. | |||
| * | |||
| * @since Ant 1.9.8 | |||
| */ | |||
| public class Native2AsciiFilter extends TokenFilter.ChainableReaderFilter { | |||
| private boolean reverse; | |||
| /** | |||
| * Flag the conversion to run in the reverse sense, | |||
| * that is Ascii to Native encoding. | |||
| * | |||
| * @param reverse True if the conversion is to be reversed, | |||
| * otherwise false; | |||
| */ | |||
| public void setReverse(boolean reverse) { | |||
| this.reverse = reverse; | |||
| } | |||
| public String filter(String line) { | |||
| return reverse | |||
| ? Native2AsciiUtils.ascii2native(line) | |||
| : Native2AsciiUtils.native2ascii(line); | |||
| } | |||
| } | |||
| @@ -0,0 +1,53 @@ | |||
| <?xml version="1.0"?> | |||
| <!-- | |||
| Licensed to the Apache Software Foundation (ASF) under one or more | |||
| contributor license agreements. See the NOTICE file distributed with | |||
| this work for additional information regarding copyright ownership. | |||
| The ASF licenses this file to You under the Apache License, Version 2.0 | |||
| (the "License"); you may not use this file except in compliance with | |||
| the License. You may obtain a copy of the License at | |||
| http://www.apache.org/licenses/LICENSE-2.0 | |||
| Unless required by applicable law or agreed to in writing, software | |||
| distributed under the License is distributed on an "AS IS" BASIS, | |||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
| See the License for the specific language governing permissions and | |||
| limitations under the License. | |||
| --> | |||
| <project default="antunit" xmlns:au="antlib:org.apache.ant.antunit"> | |||
| <import file="../antunit-base.xml" /> | |||
| <target name="testForward"> | |||
| <au:assertTrue> | |||
| <resourcesmatch> | |||
| <string value="\u00e4\u00f6\u00fc=\u00c4\u00d6\u00dc | |||
| \u00df=\u20ac"/> | |||
| <concat> | |||
| <string value="äöü=ÄÖÜ | |||
| ß=€"/> | |||
| <filterchain> | |||
| <native2asciifilter/> | |||
| </filterchain> | |||
| </concat> | |||
| </resourcesmatch> | |||
| </au:assertTrue> | |||
| </target> | |||
| <target name="testReverse"> | |||
| <au:assertTrue> | |||
| <resourcesmatch> | |||
| <string value="äöü=ÄÖÜ | |||
| ß=€"/> | |||
| <concat> | |||
| <string value="\u00e4\u00f6\u00fc=\u00c4\u00d6\u00dc | |||
| \u00df=\u20ac"/> | |||
| <filterchain> | |||
| <native2asciifilter reverse="true"/> | |||
| </filterchain> | |||
| </concat> | |||
| </resourcesmatch> | |||
| </au:assertTrue> | |||
| </target> | |||
| </project> | |||