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 @@ > </copy> > </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> > -<filterreader > classname="org.apache.tools.ant.filters.SortFilter"/> > +<filterreader > classname="org.apache.tools.ant.filters.UniqFilter"/> > </pre></blockquote> > > Convenience method: > <blockquote><pre> > -<sortfilter/> > -</pre></blockquote> > - > -This will reverse the sort order. > - > -<blockquote><pre> > -<filterreader > classname="org.apache.tools.ant.filters.SortFilter"> > - <param name="reverse" > value="true"/> > -</filterreader> > -</pre></blockquote> > - > -Convenience method: > -<blockquote><pre> > -<sortfilter reverse="true"/> > -</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> > -<typedef > classname="org.apache.tools.ant.filters.EvenFirstCmp" > - > name="evenfirst"/> > -... > - <filterchain> > - <sortfilter> > - <evenfirst/> > - </sortfilter> > - </filterchain> > +<uniqfilter/> > </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