Do we want to stick to English spellings ("unique") or are we okay with 
"uniq"--presumably correct in French?

-Matt

--- On Wed, 8/26/09, bode...@apache.org <bode...@apache.org> wrote:

> From: bode...@apache.org <bode...@apache.org>
> Subject: svn commit: r808018 - in /ant/core/trunk: ./ docs/manual/CoreTypes/ 
> src/main/org/apache/tools/ant/ src/main/org/apache/tools/ant/filters/ 
> src/tests/antunit/filters/ src/tests/antunit/filters/expected/ 
> src/tests/antunit/filters/input/
> To: notificati...@ant.apache.org
> Date: Wednesday, August 26, 2009, 9:14 AM
> Author: bodewig
> Date: Wed Aug 26 14:14:12 2009
> New Revision: 808018
> 
> URL: http://svn.apache.org/viewvc?rev=808018&view=rev
> Log:
> Now that we have sort, throw in uniq as well
> 
> Added:
>    
> ant/core/trunk/src/main/org/apache/tools/ant/filters/UniqFilter.java   (with
> props)
>    
> ant/core/trunk/src/tests/antunit/filters/expected/sortuniq.txt   (with
> props)
>    
> ant/core/trunk/src/tests/antunit/filters/expected/uniq.txt   (with
> props)
>    
> ant/core/trunk/src/tests/antunit/filters/input/uniq.txt   (with
> props)
>    
> ant/core/trunk/src/tests/antunit/filters/uniq-test.xml   (with
> props)
> Modified:
>     ant/core/trunk/WHATSNEW
>    
> ant/core/trunk/docs/manual/CoreTypes/filterchain.html
>    
> ant/core/trunk/src/main/org/apache/tools/ant/antlib.xml
> 
> Modified: ant/core/trunk/WHATSNEW
> URL: 
> http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=808018&r1=808017&r2=808018&view=diff
> ==============================================================================
> --- ant/core/trunk/WHATSNEW (original)
> +++ ant/core/trunk/WHATSNEW Wed Aug 26 14:14:12 2009
> @@ -927,6 +927,9 @@
>     added.
>     Bugzilla Report 40504.
>  
> + * A new filterreader <uniqfilter> that suppresses
> lines that match
> +   their ancestor line has been added.
> +
>  Changes from Ant 1.7.0 TO Ant 1.7.1
>  =============================================
>  
> 
> Modified:
> ant/core/trunk/docs/manual/CoreTypes/filterchain.html
> URL: 
> http://svn.apache.org/viewvc/ant/core/trunk/docs/manual/CoreTypes/filterchain.html?rev=808018&r1=808017&r2=808018&view=diff
> ==============================================================================
> --- ant/core/trunk/docs/manual/CoreTypes/filterchain.html
> (original)
> +++ ant/core/trunk/docs/manual/CoreTypes/filterchain.html
> Wed Aug 26 14:14:12 2009
> @@ -125,6 +125,7 @@
>  <a
> href="#tokenfilter">TokenFilter</a><br>
>  <a
> href="../CoreTasks/fixcrlf.html">FixCRLF</a><br>
>  <a
> href="#sortfilter">SortFilter</a><br>
> +<a
> href="#sortfilter">UniqFilter</a><br>
>  
>  <h3><a
> name="filterreader">FilterReader</a></h3>
>  
> @@ -1494,97 +1495,21 @@
>    &lt;/copy&gt;
>  </pre></blockquote>
>  
> -<h3><a
> name="sortfilter">SortFilter</a></h3>
> +<h3><a
> name="uniqfilter">UniqFilter</a></h3>
>  
> -<p>This filter sorts lines lexicographically but you
> can specifiy a
> -  custom comparator as well.</p>
> +<p>Suppresses all lines that match their ancestor
> line.  It is most
> +  useful if combined with a sort filter.</p>
>  
> -<table cellSpacing=0 cellPadding=2 border=1>
> -  <tr>
> -    <td vAlign=top><b>Parameter
> Type</b></td>
> -    <td vAlign=top><b>Parameter
> Value</b></td>
> -    <td vAlign=top
> align="center"><b>Required</b></td>
> -  </tr>
> -  <tr>
> -    <td vAlign=top>reverse</td>
> -    <td vAlign=top align="center">Whether
> to reverse the sort order
> -      (boolean).  Will be ignored if a
> custom comparator has been
> -      specified.</td>
> -    <td vAlign=top
> align="center">No</td>
> -  </tr>
> -  <tr>
> -    <td vAlign=top>comparator</td>
> -    <td vAlign=top
> align="center">Classname of a class
> -      implementing
> <code>java.util.Comparator</code> an instance
> of
> -      which will be used when comparing
> lines.</td>
> -    <td vAlign=top
> align="center">No</td>
> -  </tr>
> -</table>
> -<p>
>  <h4>Example:</h4>
>  
> -This will sort the lines.
> +This suppresses duplicate lines.
>  <blockquote><pre>
> -&lt;filterreader
> classname=&quot;org.apache.tools.ant.filters.SortFilter&quot;/&gt;
> +&lt;filterreader
> classname=&quot;org.apache.tools.ant.filters.UniqFilter&quot;/&gt;
>  </pre></blockquote>
>  
>  Convenience method:
>  <blockquote><pre>
> -&lt;sortfilter/&gt;
> -</pre></blockquote>
> -
> -This will reverse the sort order.
> -
> -<blockquote><pre>
> -&lt;filterreader
> classname=&quot;org.apache.tools.ant.filters.SortFilter&quot;&gt;
> -  &lt;param name=&quot;reverse&quot;
> value=&quot;true&quot;/&gt;
> -&lt;/filterreader&gt;
> -</pre></blockquote>
> -
> -Convenience method:
> -<blockquote><pre>
> -&lt;sortfilter reverse="true"/&gt;
> -</pre></blockquote>
> -
> -You can use your own comparator, the easiest way is by
> using typedef
> -and the convenience method which allows to specify the
> comparator as a
> -nested element:
> -<blockquote><pre>
> -public final class EvenFirstCmp implements Comparator {
> -
> -    public int compare(Object o1, Object o2) {
> -        String s1 = ((String)
> o1).substring(5).trim();
> -        String s2 = ((String)
> o2).substring(5).trim();
> -        int n1 =
> Integer.parseInt(s1);
> -        int n2 =
> Integer.parseInt(s2);
> -        if (n1 % 2 == 0) {
> -            if (n2 % 2 == 0)
> {
> -               
> return n1 - n2;
> -            } else {
> -               
> return -1;
> -            }
> -        } else {
> -            if (n2 % 2 == 0)
> {
> -               
> return 1;
> -            } else {
> -               
> return n1 - n2;
> -            }
> -        }
> -    }
> -}
> -</pre></blockquote>
> -
> -and used as 
> -
> -<blockquote><pre>
> -&lt;typedef
> classname="org.apache.tools.ant.filters.EvenFirstCmp"
> -     
>    name="evenfirst"/>
> -...
> -  &lt;filterchain>
> -    &lt;sortfilter>
> -      &lt;evenfirst/>
> -    &lt;/sortfilter>
> -  &lt;/filterchain>
> +&lt;uniqfilter/&gt;
>  </pre></blockquote>
>  
>  </body></html>
> 
> Modified:
> ant/core/trunk/src/main/org/apache/tools/ant/antlib.xml
> URL: 
> http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/antlib.xml?rev=808018&r1=808017&r2=808018&view=diff
> ==============================================================================
> --- ant/core/trunk/src/main/org/apache/tools/ant/antlib.xml
> (original)
> +++ ant/core/trunk/src/main/org/apache/tools/ant/antlib.xml
> Wed Aug 26 14:14:12 2009
> @@ -138,5 +138,7 @@
>    <!-- filters -->
>    <componentdef name="sortfilter"
> onerror="ignore"
>              
>    classname="org.apache.tools.ant.filters.SortFilter"/>
> +  <componentdef name="uniqfilter"
> onerror="ignore"
> +               
> classname="org.apache.tools.ant.filters.UniqFilter"/>
>  </antlib>
>  
> 
> Added:
> ant/core/trunk/src/main/org/apache/tools/ant/filters/UniqFilter.java
> URL: 
> http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/filters/UniqFilter.java?rev=808018&view=auto
> ==============================================================================
> ---
> ant/core/trunk/src/main/org/apache/tools/ant/filters/UniqFilter.java
> (added)
> +++
> ant/core/trunk/src/main/org/apache/tools/ant/filters/UniqFilter.java
> Wed Aug 26 14:14:12 2009
> @@ -0,0 +1,69 @@
> +/*
> + *  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 java.io.IOException;
> +import java.io.Reader;
> +
> +/**
> + * Like the Unix uniq(1) command, only returns lines that
> are
> + * different from their ancestor line.
> + *
> + * <p>This filter is probably most useful if used
> together with a sortfilter.</p>
> + *
> + * @since Ant 1.8.0
> + */
> +public class UniqFilter extends BaseFilterReader
> implements ChainableReader {
> +
> +    private String lastLine = null;
> +    private String currentLine = null;
> +
> +    public UniqFilter() { }
> +
> +    public UniqFilter(Reader rdr) {
> +        super(rdr);
> +    }
> +
> +    public int read() throws IOException {
> +        int ch = -1;
> +        if (currentLine != null) {
> +            ch =
> currentLine.charAt(0);
> +            if
> (currentLine.length() == 1) {
> +               
> currentLine = null;
> +            } else {
> +               
> currentLine = currentLine.substring(1);
> +            }
> +        } else {
> +            do {
> +               
> currentLine = readLine();
> +            } while
> (lastLine != null && currentLine != null
> +               
>      &&
> lastLine.equals(currentLine));
> +            lastLine =
> currentLine;
> +            if (currentLine
> != null) {
> +               
> return read();
> +            }
> +        }
> +        return ch;
> +    }
> +
> +    public Reader chain(final Reader rdr) {
> +        UniqFilter newFilter = new
> UniqFilter(rdr);
> +       
> newFilter.setInitialized(true);
> +        return newFilter;
> +    }
> +}
> 
> Propchange:
> ant/core/trunk/src/main/org/apache/tools/ant/filters/UniqFilter.java
> ------------------------------------------------------------------------------
>     svn:eol-style = native
> 
> Added:
> ant/core/trunk/src/tests/antunit/filters/expected/sortuniq.txt
> URL: 
> http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/filters/expected/sortuniq.txt?rev=808018&view=auto
> ==============================================================================
> ---
> ant/core/trunk/src/tests/antunit/filters/expected/sortuniq.txt
> (added)
> +++
> ant/core/trunk/src/tests/antunit/filters/expected/sortuniq.txt
> Wed Aug 26 14:14:12 2009
> @@ -0,0 +1,4 @@
> +A
> +AA
> +B
> +C
> 
> Propchange:
> ant/core/trunk/src/tests/antunit/filters/expected/sortuniq.txt
> ------------------------------------------------------------------------------
>     svn:eol-style = native
> 
> Added:
> ant/core/trunk/src/tests/antunit/filters/expected/uniq.txt
> URL: 
> http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/filters/expected/uniq.txt?rev=808018&view=auto
> ==============================================================================
> ---
> ant/core/trunk/src/tests/antunit/filters/expected/uniq.txt
> (added)
> +++
> ant/core/trunk/src/tests/antunit/filters/expected/uniq.txt
> Wed Aug 26 14:14:12 2009
> @@ -0,0 +1,5 @@
> +A
> +AA
> +B
> +C
> +B
> 
> Propchange:
> ant/core/trunk/src/tests/antunit/filters/expected/uniq.txt
> ------------------------------------------------------------------------------
>     svn:eol-style = native
> 
> Added:
> ant/core/trunk/src/tests/antunit/filters/input/uniq.txt
> URL: 
> http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/filters/input/uniq.txt?rev=808018&view=auto
> ==============================================================================
> --- ant/core/trunk/src/tests/antunit/filters/input/uniq.txt
> (added)
> +++ ant/core/trunk/src/tests/antunit/filters/input/uniq.txt
> Wed Aug 26 14:14:12 2009
> @@ -0,0 +1,6 @@
> +A
> +AA
> +AA
> +B
> +C
> +B
> 
> Propchange:
> ant/core/trunk/src/tests/antunit/filters/input/uniq.txt
> ------------------------------------------------------------------------------
>     svn:eol-style = native
> 
> Added:
> ant/core/trunk/src/tests/antunit/filters/uniq-test.xml
> URL: 
> http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/filters/uniq-test.xml?rev=808018&view=auto
> ==============================================================================
> --- ant/core/trunk/src/tests/antunit/filters/uniq-test.xml
> (added)
> +++ ant/core/trunk/src/tests/antunit/filters/uniq-test.xml
> Wed Aug 26 14:14:12 2009
> @@ -0,0 +1,49 @@
> +<?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="setUp">
> +    <mkdir dir="${output}"/>
> +  </target>
> +
> +  <target name="testUniqFilter"
> depends="setUp">
> +    <copy file="input/uniq.txt"
> +         
> tofile="${output}/uniq.txt">
> +      <filterchain>
> +        <uniqfilter/>
> +      </filterchain>
> +    </copy>
> +    <au:assertFilesMatch
> +   
>    expected="expected/uniq.txt"
> +   
>    actual="${output}/uniq.txt"/>
> +  </target>
> +
> +  <target name="testSortUniq" depends="setUp">
> +    <copy file="input/uniq.txt"
> +         
> tofile="${output}/uniq.txt">
> +      <filterchain>
> +        <sortfilter/>
> +        <uniqfilter/>
> +      </filterchain>
> +    </copy>
> +    <au:assertFilesMatch
> +   
>    expected="expected/sortuniq.txt"
> +   
>    actual="${output}/uniq.txt"/>
> +  </target>
> +</project>
> 
> Propchange:
> ant/core/trunk/src/tests/antunit/filters/uniq-test.xml
> ------------------------------------------------------------------------------
>     svn:eol-style = native
> 
> 
> 




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

Reply via email to