You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by Greg 'Cosmo' Haun <GH...@cenquest.com> on 2002/11/07 00:24:46 UTC
Replace enhancement
I've added some functionality to the Replace task via a new attribute
that makes it easy to use meta-data stored in a property file to replace
a token which appears in a collection of files where the values vary by
filename. Below are the additions to the Ant manual entry, followed by
the diffs for the code and docs.
I've never submitted to an open-source project before (except by
identifying bugs). What is the process for deciding if this gets
incorporated?
Thanks,
-cosmo
Parameters
Attribute: filevaluelist
Description:valid property file defining a mapping between filenames
(property name) and values (property value). Values replace the token
attribute according to filename. Filenames not listed inherent any value
specified in the value attribute.
Required: No.
Examples
Using filevaluelist
<replace dir="." fileValueList="filename_date.txt"
token="@DueDateHere@" value="TBD">
<include name="*.htm?" />
</replace>
For all html files, replace token "@DueDateHere@" with the value
specified for that file in filename_date.txt. Replace the token with
"TBD" if the filename is not a property within filename_date.txt.
------------------------------------------------------------------------
diff output for Replace.java
101d100
< private File fileValueList = null;
274c273
<
---
>
327,331c326
< if (token == null && fileValueList != null) {
< String message = "A token must be specified when a
fileValueList "
< + "is used.";
< throw new BuildException(message, getLocation());
< } else if (token == null && replacefilters.size() == 0) {
---
> if (token == null && replacefilters.size() == 0) {
439,450c434,439
< StringUtils.LINE_SEP);
< if (fileValueList != null) {
< Properties props = getProperties(fileValueList);
< if (props.containsKey(src.getName())) {
< val = props.getProperty(src.getName());
< }
< }
<
< // for each found token, replace with
value
< log("Replacing in " +
src.getPath() + ": " + tok
< + " --> " + val, Project.
MSG_VERBOSE);
< newString = stringReplace(newString,
tok, val);
---
> StringUtils.LINE_SEP);
>
> // for each found token, replace with value
> log("Replacing in " + src.getPath() + ": " +
token.getText()
> + " --> " + value.getText(), Project.MSG_VERBOSE);
> newString = stringReplace(newString, tok, val);
456c445
<
---
>
558,566d546
< }
<
< /**
< * Sets the name of a property file mapping filenames
< * to values; optional.
< * @param filename file to load
< */
< public void setFileValueList(File filename) {
< fileValueList = filename;
diff output for Replace.html
42c42
< <code>replacetoken</code> element or the replacefilterfile or the
filevaluelist
---
> <code>replacetoken</code> element or the replacefilterfile
71,77c71
< <tr>
< <td valign="top">filevaluelist</td>
< <td valign="top">valid property file defining a mapping between
filenames (property name)
< and values (property value). Values replace the
<code>token</code> attribute according to filename. Filenames not listed
< inherent any value specified in the <code>value</code> attribute.
< <td valign="top" align="center">No.</td>
< </tr><tr>
---
> <tr>
185,193d178
< <h4>Using filevaluelist</h4>
< <blockquote><pre>
< <replace dir="." fileValueList="filename_date.txt"
< token="@DueDateHere@" value="TBD">
< <include name="*.htm?" />
< </replace>
< </pre></blockquote>
< <p>For all html files, replace token "@DueDateHere@" with the value
specified for that file in <code>filename_date.txt</code>.
< Replace the token with "TBD" if the filename is not a property
within <code>filename_date.txt</code>.</p>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>