You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@turbine.apache.org by sb...@apache.org on 2002/02/27 08:44:26 UTC
cvs commit: jakarta-turbine-maven/src/java/org/apache/maven/jrcs/rcs KeywordsFormat.java Archive.java ArchiveFormat.java
sbailliez 02/02/26 23:44:26
Modified: src/java/org/apache/maven/jrcs jdiff.java rcsp.java
src/java/org/apache/maven/jrcs/rcs Archive.java
Added: src/java/org/apache/maven/jrcs/rcs KeywordsFormat.java
Removed: src/java/org/apache/maven/jrcs/rcs ArchiveFormat.java
Log:
- Changed the name from ArchiveFormat to KeywordsFormat
- minor fixes in code and javadoc
Revision Changes Path
1.7 +3 -7 jakarta-turbine-maven/src/java/org/apache/maven/jrcs/jdiff.java
Index: jdiff.java
===================================================================
RCS file: /home/cvs/jakarta-turbine-maven/src/java/org/apache/maven/jrcs/jdiff.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- jdiff.java 24 Feb 2002 12:25:05 -0000 1.6
+++ jdiff.java 27 Feb 2002 07:44:26 -0000 1.7
@@ -71,17 +71,13 @@
static final String[] loadFile(String name) throws IOException
{
BufferedReader data = new BufferedReader(new FileReader(name));
- Vector v = new Vector();
+ Vector lines = new Vector();
String s;
-
while ((s = data.readLine()) != null)
{
- v.addElement(s);
+ lines.addElement(s);
}
-
- String[] result = new String[v.size()];
- v.copyInto(result);
- return result;
+ return (String[])lines.toArray(new String[lines.size()]);
}
static final void usage(String name)
1.7 +1 -1 jakarta-turbine-maven/src/java/org/apache/maven/jrcs/rcsp.java
Index: rcsp.java
===================================================================
RCS file: /home/cvs/jakarta-turbine-maven/src/java/org/apache/maven/jrcs/rcsp.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- rcsp.java 23 Feb 2002 13:43:16 -0000 1.6
+++ rcsp.java 27 Feb 2002 07:44:26 -0000 1.7
@@ -69,7 +69,7 @@
// try {
if (args.length > 2)
{
- System.out.println("WRONG USSAGE: need at most one parameter");
+ System.out.println("WRONG USAGE: need at most one parameter");
}
else
{
1.13 +6 -6 jakarta-turbine-maven/src/java/org/apache/maven/jrcs/rcs/Archive.java
Index: Archive.java
===================================================================
RCS file: /home/cvs/jakarta-turbine-maven/src/java/org/apache/maven/jrcs/rcs/Archive.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- Archive.java 27 Feb 2002 03:37:16 -0000 1.12
+++ Archive.java 27 Feb 2002 07:44:26 -0000 1.13
@@ -101,7 +101,7 @@
protected String filename = "__unknown__,v";
// synchronize this if this has to be used in MT !
- private final static ArchiveFormat FORMATTER = new ArchiveFormat();
+ private static final KeywordsFormat FORMATTER = new KeywordsFormat();
/**
* Creates a new archive and sets the text of the initial revision.
@@ -324,8 +324,8 @@
* @param value The keyword expansion value. It should be one of:
* <ul>
* <li> kv (Default) Substitue keyword and value.
- * <li> kvl Substitue keyword, value, and locker (if any).
- * <li> k Substitue keyword only.
+ * <li> kvl Substitute keyword, value, and locker (if any).
+ * <li> k Substitute keyword only.
* <li> o Preserve original string.
* <li> b Like o, but mark file as binary.
* <li> v Substitue value only.
@@ -540,9 +540,9 @@
* Partial version numbers are OK.
* @return The actual version, or null if a node is not found.
*/
- public Version getRevisionVersion(String v)
+ public Version getRevisionVersion(String vernum)
{
- return getRevisionVersion(new Version(v));
+ return getRevisionVersion(new Version(vernum));
}
/**
@@ -1014,7 +1014,7 @@
Object[] result = new Object[text.length];
for (int i = 0; i < text.length; i++)
{
- result[i] = FORMATTER.format(text[i].toString(), revisionInfo);
+ result[i] = FORMATTER.update(text[i].toString(), revisionInfo);
}
return result;
}
1.1 jakarta-turbine-maven/src/java/org/apache/maven/jrcs/rcs/KeywordsFormat.java
Index: KeywordsFormat.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Maven" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Maven", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.maven.jrcs.rcs;
import java.text.Format;
import java.text.MessageFormat;
import org.apache.oro.text.perl.Perl5Util;
import org.apache.oro.text.regex.Perl5Matcher;
import org.apache.oro.text.regex.StringSubstitution;
import org.apache.oro.text.regex.Substitution;
import org.apache.oro.text.regex.Util;
import org.apache.oro.text.regex.Pattern;
import org.apache.oro.text.regex.Perl5Compiler;
import org.apache.oro.text.regex.MalformedPatternException;
/**
* Formatter for the RCS keywords. It is intended as an helper class to
* replace the use of gnu.regexp. This class is NOT threadsafe.
*
* @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a>
*/
final class KeywordsFormat
{
//WARNING: Do not remove the string concatenations
// or CVS will mangle the strings on check in/out.
final Format Header_FORMAT =
new MessageFormat("$" + "Header: {1} {2} {3, date,yyyy/MM/dd HH:mm:ss} {4} {5} " + "$");
final Format Id_FORMAT =
new MessageFormat("$" + "Id: {1} {2} {3, date,yyyy/MM/dd HH:mm:ss} {4} {5} " + "$");
final Format RCSFile_FORMAT =
new MessageFormat("$" + "RCSfile: {1} " + "$");
final Format Revision_FORMAT =
new MessageFormat("$" + "Revision: {2} " + "$");
final Format Date_FORMAT =
new MessageFormat("$" + "Date: {3, date,yyyy/MM/dd HH:mm:ss} " + "$");
final Format Author_FORMAT =
new MessageFormat("$" + "Author: {4} " + "$");
final Format State_FORMAT =
new MessageFormat("$" + "State: {5} " + "$");
final Format Locker_FORMAT =
new MessageFormat("$" + "Locker: {6} " + "$");
final Format Source_FORMAT =
new MessageFormat("$" + "Source: {0} " + "$");
private final Pattern ID_RE;
private final Pattern HEADER_RE;
private final Pattern SOURCE_RE;
private final Pattern RCSFILE_RE;
private final Pattern REVISION_RE;
private final Pattern DATE_RE;
private final Pattern AUTHOR_RE;
private final Pattern STATE_RE;
private final Pattern LOCKER_RE;
/** the substitution instance to be reused */
private final StringSubstitution subst = new StringSubstitution();
KeywordsFormat()
{
try
{
Perl5Compiler compiler = new Perl5Compiler();
ID_RE = compiler.compile("\\$Id(:[^\\$]*)?\\$");
HEADER_RE = compiler.compile("\\$Header(:[^\\$]*)?\\$");
SOURCE_RE = compiler.compile("\\$Source(:[^\\$]*)?\\$");
RCSFILE_RE = compiler.compile("\\$RCSfile(:[^\\$]*)?\\$");
REVISION_RE = compiler.compile("\\$Revision(:[^\\$]*)?\\$");
DATE_RE = compiler.compile("\\$Date(:[^\\$]*)?\\$");
AUTHOR_RE = compiler.compile("\\$Author(:[^\\$]*)?\\$");
STATE_RE = compiler.compile("\\$State(:[^\\$]*)?\\$");
LOCKER_RE = compiler.compile("\\$Locker(:[^\\$]*)?\\$");
}
catch (MalformedPatternException e)
{
throw new ExceptionInInitializerError(e);
}
}
/** the matcher used for replacement */
private final Perl5Matcher matcher = new Perl5Matcher();
/**
* update the given text made of RCS keywords with the appropriate
* revision info.
* @param text the input text containing the RCS keywords.
* @param revisionInfo the revision information.
* @return the formatted text with the RCS keywords.
*/
String update(String text, Object[] revisionInfo)
{
String data = text;
data = substitute(data, ID_RE, Id_FORMAT.format(revisionInfo));
data = substitute(data, HEADER_RE, Header_FORMAT.format(revisionInfo));
data = substitute(data, SOURCE_RE, Source_FORMAT.format(revisionInfo));
data = substitute(data, RCSFILE_RE, RCSFile_FORMAT.format(revisionInfo));
data = substitute(data, REVISION_RE, Revision_FORMAT.format(revisionInfo));
data = substitute(data, DATE_RE, Date_FORMAT.format(revisionInfo));
data = substitute(data, AUTHOR_RE, Author_FORMAT.format(revisionInfo));
data = substitute(data, STATE_RE, State_FORMAT.format(revisionInfo));
data = substitute(data, LOCKER_RE, Locker_FORMAT.format(revisionInfo));
//@TODO: should do something about Name and Log
return data;
}
/**
* Reinitialize all RCS keywords match.
* @param text the text to look for RCS keywords.
* @return the text with initialized RCS keywords.
*/
String reset(String text)
{
//WARNING: Do not remove the string concatenations
// or CVS will mangle the strings on check in/out.
String data = text;
data = substitute(data, ID_RE, '$' + "Id$");
data = substitute(data, HEADER_RE, '$' + "Header$");
data = substitute(data, SOURCE_RE, '$' + "Source$");
data = substitute(data, RCSFILE_RE, '$' + "RCSfile$");
data = substitute(data, REVISION_RE, '$' + "Revision$");
data = substitute(data, DATE_RE, '$' + "Date$");
data = substitute(data, AUTHOR_RE, '$' + "Author$");
data = substitute(data, STATE_RE, '$' + "State$");
data = substitute(data, LOCKER_RE, '$' + "Locker$");
//@TODO: should do something about Name and Log
return data;
}
/**
* Helper method for substitution that will substitute all matches of
* a given pattern.
* @param input the text to look for substitutions.
* @param pattern the pattern to replace in the input text.
* @param substitution the string to use as a replacement for the pattern.
* @return the text with the subsituted value.
*/
private final String substitute(String input, Pattern pattern, String substitution)
{
subst.setSubstitution(substitution);
final String output = Util.substitute(matcher, pattern, subst, input, Util.SUBSTITUTE_ALL);
// no need to keep a reference to the last substitution string
subst.setSubstitution("");
return output;
}
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
RE: cvs commit: jakarta-turbine-maven/src/java/org/apache/maven/jrcs/rcs KeywordsFormat.java Archive.java ArchiveFormat.java
Posted by Juancarlo Anez <ju...@suigeneris.org>.
+1
> -----Original Message-----
> From: dlr@despot.finemaltcoding.com
> Juanco, how about an ArrayList instead of Vector?
>
> sbailliez@apache.org writes:
>
> > sbailliez 02/02/26 23:44:26
> >
> > Added: src/java/org/apache/maven/jrcs/rcs KeywordsFormat.java
> > static final String[] loadFile(String name) throws IOException
> > {
> > BufferedReader data = new BufferedReader(new
> FileReader(name));
> > + Vector lines = new Vector();
Re: cvs commit: jakarta-turbine-maven/src/java/org/apache/maven/jrcs/rcs KeywordsFormat.java Archive.java ArchiveFormat.java
Posted by Daniel Rall <dl...@finemaltcoding.com>.
Juanco, how about an ArrayList instead of Vector?
sbailliez@apache.org writes:
> sbailliez 02/02/26 23:44:26
>
> Modified: src/java/org/apache/maven/jrcs jdiff.java rcsp.java
> src/java/org/apache/maven/jrcs/rcs Archive.java
> Added: src/java/org/apache/maven/jrcs/rcs KeywordsFormat.java
> Removed: src/java/org/apache/maven/jrcs/rcs ArchiveFormat.java
> Log:
> - Changed the name from ArchiveFormat to KeywordsFormat
> - minor fixes in code and javadoc
>
> Revision Changes Path
> 1.7 +3 -7 jakarta-turbine-maven/src/java/org/apache/maven/jrcs/jdiff.java
>
> Index: jdiff.java
> ===================================================================
> RCS file: /home/cvs/jakarta-turbine-maven/src/java/org/apache/maven/jrcs/jdiff.java,v
> retrieving revision 1.6
> retrieving revision 1.7
> diff -u -r1.6 -r1.7
> --- jdiff.java 24 Feb 2002 12:25:05 -0000 1.6
> +++ jdiff.java 27 Feb 2002 07:44:26 -0000 1.7
> @@ -71,17 +71,13 @@
> static final String[] loadFile(String name) throws IOException
> {
> BufferedReader data = new BufferedReader(new FileReader(name));
> - Vector v = new Vector();
> + Vector lines = new Vector();
> String s;
> -
> while ((s = data.readLine()) != null)
> {
> - v.addElement(s);
> + lines.addElement(s);
> }
> -
> - String[] result = new String[v.size()];
> - v.copyInto(result);
> - return result;
> + return (String[])lines.toArray(new String[lines.size()]);
> }
>
> static final void usage(String name)
>
>
>
> 1.7 +1 -1 jakarta-turbine-maven/src/java/org/apache/maven/jrcs/rcsp.java
>
> Index: rcsp.java
> ===================================================================
> RCS file: /home/cvs/jakarta-turbine-maven/src/java/org/apache/maven/jrcs/rcsp.java,v
> retrieving revision 1.6
> retrieving revision 1.7
> diff -u -r1.6 -r1.7
> --- rcsp.java 23 Feb 2002 13:43:16 -0000 1.6
> +++ rcsp.java 27 Feb 2002 07:44:26 -0000 1.7
> @@ -69,7 +69,7 @@
> // try {
> if (args.length > 2)
> {
> - System.out.println("WRONG USSAGE: need at most one parameter");
> + System.out.println("WRONG USAGE: need at most one parameter");
> }
> else
> {
>
>
>
> 1.13 +6 -6 jakarta-turbine-maven/src/java/org/apache/maven/jrcs/rcs/Archive.java
>
> Index: Archive.java
> ===================================================================
> RCS file: /home/cvs/jakarta-turbine-maven/src/java/org/apache/maven/jrcs/rcs/Archive.java,v
> retrieving revision 1.12
> retrieving revision 1.13
> diff -u -r1.12 -r1.13
> --- Archive.java 27 Feb 2002 03:37:16 -0000 1.12
> +++ Archive.java 27 Feb 2002 07:44:26 -0000 1.13
> @@ -101,7 +101,7 @@
> protected String filename = "__unknown__,v";
>
> // synchronize this if this has to be used in MT !
> - private final static ArchiveFormat FORMATTER = new ArchiveFormat();
> + private static final KeywordsFormat FORMATTER = new KeywordsFormat();
>
> /**
> * Creates a new archive and sets the text of the initial revision.
> @@ -324,8 +324,8 @@
> * @param value The keyword expansion value. It should be one of:
> * <ul>
> * <li> kv (Default) Substitue keyword and value.
> - * <li> kvl Substitue keyword, value, and locker (if any).
> - * <li> k Substitue keyword only.
> + * <li> kvl Substitute keyword, value, and locker (if any).
> + * <li> k Substitute keyword only.
> * <li> o Preserve original string.
> * <li> b Like o, but mark file as binary.
> * <li> v Substitue value only.
> @@ -540,9 +540,9 @@
> * Partial version numbers are OK.
> * @return The actual version, or null if a node is not found.
> */
> - public Version getRevisionVersion(String v)
> + public Version getRevisionVersion(String vernum)
> {
> - return getRevisionVersion(new Version(v));
> + return getRevisionVersion(new Version(vernum));
> }
>
> /**
> @@ -1014,7 +1014,7 @@
> Object[] result = new Object[text.length];
> for (int i = 0; i < text.length; i++)
> {
> - result[i] = FORMATTER.format(text[i].toString(), revisionInfo);
> + result[i] = FORMATTER.update(text[i].toString(), revisionInfo);
> }
> return result;
> }
>
>
>
> 1.1 jakarta-turbine-maven/src/java/org/apache/maven/jrcs/rcs/KeywordsFormat.java
>
> Index: KeywordsFormat.java
> ===================================================================
> /* ====================================================================
> * The Apache Software License, Version 1.1
> *
> * Copyright (c) 2002 The Apache Software Foundation. All rights
> * reserved.
> *
> * Redistribution and use in source and binary forms, with or without
> * modification, are permitted provided that the following conditions
> * are met:
> *
> * 1. Redistributions of source code must retain the above copyright
> * notice, this list of conditions and the following disclaimer.
> *
> * 2. Redistributions in binary form must reproduce the above copyright
> * notice, this list of conditions and the following disclaimer in
> * the documentation and/or other materials provided with the
> * distribution.
> *
> * 3. The end-user documentation included with the redistribution,
> * if any, must include the following acknowledgment:
> * "This product includes software developed by the
> * Apache Software Foundation (http://www.apache.org/)."
> * Alternately, this acknowledgment may appear in the software itself,
> * if and wherever such third-party acknowledgments normally appear.
> *
> * 4. The names "Apache" and "Apache Software Foundation" and
> * "Apache Maven" must not be used to endorse or promote products
> * derived from this software without prior written permission. For
> * written permission, please contact apache@apache.org.
> *
> * 5. Products derived from this software may not be called "Apache",
> * "Apache Maven", nor may "Apache" appear in their name, without
> * prior written permission of the Apache Software Foundation.
> *
> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
> * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
> * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
> * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
> * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
> * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> * SUCH DAMAGE.
> * ====================================================================
> *
> * This software consists of voluntary contributions made by many
> * individuals on behalf of the Apache Software Foundation. For more
> * information on the Apache Software Foundation, please see
> * <http://www.apache.org/>.
> */
>
> package org.apache.maven.jrcs.rcs;
>
> import java.text.Format;
> import java.text.MessageFormat;
>
> import org.apache.oro.text.perl.Perl5Util;
> import org.apache.oro.text.regex.Perl5Matcher;
> import org.apache.oro.text.regex.StringSubstitution;
> import org.apache.oro.text.regex.Substitution;
> import org.apache.oro.text.regex.Util;
> import org.apache.oro.text.regex.Pattern;
> import org.apache.oro.text.regex.Perl5Compiler;
> import org.apache.oro.text.regex.MalformedPatternException;
>
> /**
> * Formatter for the RCS keywords. It is intended as an helper class to
> * replace the use of gnu.regexp. This class is NOT threadsafe.
> *
> * @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a>
> */
> final class KeywordsFormat
> {
> //WARNING: Do not remove the string concatenations
> // or CVS will mangle the strings on check in/out.
> final Format Header_FORMAT =
> new MessageFormat("$" + "Header: {1} {2} {3, date,yyyy/MM/dd HH:mm:ss} {4} {5} " + "$");
> final Format Id_FORMAT =
> new MessageFormat("$" + "Id: {1} {2} {3, date,yyyy/MM/dd HH:mm:ss} {4} {5} " + "$");
> final Format RCSFile_FORMAT =
> new MessageFormat("$" + "RCSfile: {1} " + "$");
> final Format Revision_FORMAT =
> new MessageFormat("$" + "Revision: {2} " + "$");
> final Format Date_FORMAT =
> new MessageFormat("$" + "Date: {3, date,yyyy/MM/dd HH:mm:ss} " + "$");
> final Format Author_FORMAT =
> new MessageFormat("$" + "Author: {4} " + "$");
> final Format State_FORMAT =
> new MessageFormat("$" + "State: {5} " + "$");
> final Format Locker_FORMAT =
> new MessageFormat("$" + "Locker: {6} " + "$");
> final Format Source_FORMAT =
> new MessageFormat("$" + "Source: {0} " + "$");
>
> private final Pattern ID_RE;
> private final Pattern HEADER_RE;
> private final Pattern SOURCE_RE;
> private final Pattern RCSFILE_RE;
> private final Pattern REVISION_RE;
> private final Pattern DATE_RE;
> private final Pattern AUTHOR_RE;
> private final Pattern STATE_RE;
> private final Pattern LOCKER_RE;
>
> /** the substitution instance to be reused */
> private final StringSubstitution subst = new StringSubstitution();
>
> KeywordsFormat()
> {
> try
> {
> Perl5Compiler compiler = new Perl5Compiler();
> ID_RE = compiler.compile("\\$Id(:[^\\$]*)?\\$");
> HEADER_RE = compiler.compile("\\$Header(:[^\\$]*)?\\$");
> SOURCE_RE = compiler.compile("\\$Source(:[^\\$]*)?\\$");
> RCSFILE_RE = compiler.compile("\\$RCSfile(:[^\\$]*)?\\$");
> REVISION_RE = compiler.compile("\\$Revision(:[^\\$]*)?\\$");
> DATE_RE = compiler.compile("\\$Date(:[^\\$]*)?\\$");
> AUTHOR_RE = compiler.compile("\\$Author(:[^\\$]*)?\\$");
> STATE_RE = compiler.compile("\\$State(:[^\\$]*)?\\$");
> LOCKER_RE = compiler.compile("\\$Locker(:[^\\$]*)?\\$");
> }
> catch (MalformedPatternException e)
> {
> throw new ExceptionInInitializerError(e);
> }
> }
>
> /** the matcher used for replacement */
> private final Perl5Matcher matcher = new Perl5Matcher();
>
> /**
> * update the given text made of RCS keywords with the appropriate
> * revision info.
> * @param text the input text containing the RCS keywords.
> * @param revisionInfo the revision information.
> * @return the formatted text with the RCS keywords.
> */
> String update(String text, Object[] revisionInfo)
> {
> String data = text;
> data = substitute(data, ID_RE, Id_FORMAT.format(revisionInfo));
> data = substitute(data, HEADER_RE, Header_FORMAT.format(revisionInfo));
> data = substitute(data, SOURCE_RE, Source_FORMAT.format(revisionInfo));
> data = substitute(data, RCSFILE_RE, RCSFile_FORMAT.format(revisionInfo));
> data = substitute(data, REVISION_RE, Revision_FORMAT.format(revisionInfo));
> data = substitute(data, DATE_RE, Date_FORMAT.format(revisionInfo));
> data = substitute(data, AUTHOR_RE, Author_FORMAT.format(revisionInfo));
> data = substitute(data, STATE_RE, State_FORMAT.format(revisionInfo));
> data = substitute(data, LOCKER_RE, Locker_FORMAT.format(revisionInfo));
> //@TODO: should do something about Name and Log
> return data;
> }
>
> /**
> * Reinitialize all RCS keywords match.
> * @param text the text to look for RCS keywords.
> * @return the text with initialized RCS keywords.
> */
> String reset(String text)
> {
> //WARNING: Do not remove the string concatenations
> // or CVS will mangle the strings on check in/out.
> String data = text;
> data = substitute(data, ID_RE, '$' + "Id$");
> data = substitute(data, HEADER_RE, '$' + "Header$");
> data = substitute(data, SOURCE_RE, '$' + "Source$");
> data = substitute(data, RCSFILE_RE, '$' + "RCSfile$");
> data = substitute(data, REVISION_RE, '$' + "Revision$");
> data = substitute(data, DATE_RE, '$' + "Date$");
> data = substitute(data, AUTHOR_RE, '$' + "Author$");
> data = substitute(data, STATE_RE, '$' + "State$");
> data = substitute(data, LOCKER_RE, '$' + "Locker$");
> //@TODO: should do something about Name and Log
> return data;
> }
>
>
> /**
> * Helper method for substitution that will substitute all matches of
> * a given pattern.
> * @param input the text to look for substitutions.
> * @param pattern the pattern to replace in the input text.
> * @param substitution the string to use as a replacement for the pattern.
> * @return the text with the subsituted value.
> */
> private final String substitute(String input, Pattern pattern, String substitution)
> {
> subst.setSubstitution(substitution);
> final String output = Util.substitute(matcher, pattern, subst, input, Util.SUBSTITUTE_ALL);
> // no need to keep a reference to the last substitution string
> subst.setSubstitution("");
> return output;
> }
>
> }
>
>
>
>
> --
> To unsubscribe, e-mail: <ma...@jakarta.apache.org>
> For additional commands, e-mail: <ma...@jakarta.apache.org>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>