On 11:26 Tue 25 Jan , Pekka Enberg wrote: > On Tue, Jan 25, 2011 at 1:36 AM, Dr Andrew John Hughes > <ahug...@redhat.com> wrote: > > On 23:22 Mon 24 Jan , Pekka Enberg wrote: > >> On 22 January 2011 19:38, Pekka Enberg <penb...@kernel.org> wrote: > >> >> From: Ivan Maidanski <iv...@mail.ru> > >> >> > >> >> 2010-07-02 Ivan Maidanski <iv...@mail.ru> > >> >> > >> >> * java/util/regex/Pattern.java: > >> >> (quote): Implement new 1.5 Java API method. > >> >> --- > >> >> ChangeLog | 5 +++++ > >> >> java/util/regex/Pattern.java | 37 > >> >> ++++++++++++++++++++++++++++++++++++- > >> >> 2 files changed, 41 insertions(+), 1 deletions(-) > >> >> > >> >> diff --git a/ChangeLog b/ChangeLog > >> >> index 4d0bf6d..52b4760 100644 > >> >> --- a/ChangeLog > >> >> +++ b/ChangeLog > >> >> @@ -1,3 +1,8 @@ > >> >> +2010-07-02 Ivan Maidanski <iv...@mail.ru> > >> >> + > >> >> + * java/util/regex/Pattern.java: > >> >> + (quote): Implement new 1.5 Java API method. > >> >> + > >> >> 2011-01-21 Pekka Enberg <penb...@kernel.org> > >> >> > >> >> * java/lang/Class.java: > >> >> diff --git a/java/util/regex/Pattern.java b/java/util/regex/Pattern.java > >> >> index 7d1fc84..2aae9bb 100644 > >> >> --- a/java/util/regex/Pattern.java > >> >> +++ b/java/util/regex/Pattern.java > >> >> @@ -1,5 +1,6 @@ > >> >> /* Pattern.java -- Compiled regular expression ready to be applied. > >> >> - Copyright (C) 2002, 2004, 2005, 2007 Free Software Foundation, Inc. > >> >> + Copyright (C) 2002, 2004, 2005, 2007, 2010 > >> >> + Free Software Foundation, Inc. > >> >> > >> >> This file is part of GNU Classpath. > >> >> > >> >> @@ -37,6 +38,8 @@ exception statement from your version. */ > >> >> > >> >> package java.util.regex; > >> >> > >> >> +import gnu.java.lang.CPStringBuilder; > >> >> + > >> >> import gnu.java.util.regex.RE; > >> >> import gnu.java.util.regex.REException; > >> >> import gnu.java.util.regex.RESyntax; > >> >> @@ -260,6 +263,38 @@ public final class Pattern implements Serializable > >> >> } > >> >> > >> >> /** > >> >> + * Returns a literal pattern for the specified String. > >> >> + * > >> >> + * @since 1.5 > >> >> + */ > >> >> + public static String quote(String str) > >> >> + { > >> >> + int eInd = str.indexOf("\\E"); > >> >> + if (eInd < 0) > >> >> + { > >> >> + // No need to handle backslashes. > >> >> + return "\\Q" + str + "\\E"; > >> >> + } > >> >> + > >> >> + CPStringBuilder sb = new CPStringBuilder(str.length() + 16); > >> >> + sb.append("\\Q"); // start quote > >> >> + > >> >> + int pos = 0; > >> >> + do > >> >> + { > >> >> + // A backslash is quoted by another backslash; > >> >> + // 'E' is not needed to be quoted. > >> >> + sb.append(str.substring(pos, eInd)) > >> >> + .append("\\E" + "\\\\" + "E" + "\\Q"); > >> >> + pos = eInd + 2; > >> >> + } while ((eInd = str.indexOf("\\E", pos)) >= 0); > >> >> + > >> >> + sb.append(str.substring(pos, str.length())) > >> >> + .append("\\E"); // end quote > >> >> + return sb.toString(); > >> >> + } > >> >> + > >> >> + /** > >> >> * Return the regular expression used to construct this object. > >> >> * @specnote Prior to JDK 1.5 this method had a different behavior > >> >> * @since 1.5 > >> > >> On Sun, Jan 23, 2011 at 2:38 AM, Dr Andrew John Hughes > >> <gnu_and...@member.fsf.org> wrote: > >> > The javadoc is incomplete; the parameter and return value are not > >> > documented. > >> > > >> > Do you have some test cases for this? > >> > >> No, I don't. Ivan, do you have test cases for this? If not, I can > >> write one for Mauve. > >> > > > > Oh this is one of Ivan's? I didn't spot that. Which number is it? > > (so I don't review it all over again ;-) ) > > It's this one here: > > - http://article.gmane.org/gmane.comp.java.classpath.patches/13009 > (classpath-ivmai-26.diff); >
Thanks! > > A test case would be great. I can't really review this patch well without > > knowing what it's supposed to be doing. > > Can I add a new one in Mauve that simply test that the return value > makes sense or should I try to embed it into > gnu/testlet/java/util/regex/Pattern/matches.java? I'd prefer a separate test e.g. gnu/testlet/java/util/regex/Pattern/quote.java -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and IcedTea http://www.gnu.org/software/classpath http://icedtea.classpath.org PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8