You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@hyperreal.org on 1999/11/16 01:41:57 UTC
cvs commit: jakarta-tools/ant/src/main/org/apache/tools/ant ScriptHelper.java
costin 99/11/15 16:41:56
Added: ant/src/main/org/apache/tools/ant ScriptHelper.java
Log:
Moved the "replace ${X} " from ProjectHelper in a separate class.
Revision Changes Path
1.1 jakarta-tools/ant/src/main/org/apache/tools/ant/ScriptHelper.java
Index: ScriptHelper.java
===================================================================
package org.apache.tools.ant;
import java.beans.*;
import java.io.*;
import java.io.IOException;
import java.lang.reflect.*;
import java.util.Hashtable;
import java.util.StringTokenizer;
public class ScriptHelper {
/** Replace ${NAME} with the value of "NAME" property.
* Works for both getNAME() and getProperty("NAME").
*/
public static String replaceProperties( String value, Object container )
throws BuildException
{
return replaceProperties( value, container, null );
}
/** Replace ${NAME} with the value of "NAME" property.
* If not found, try to get it from def.
* Works for both getNAME() and getProperty("NAME").
*/
public static String replaceProperties( String value ,Object proj, Object def)
throws BuildException
{
StringBuffer sb=new StringBuffer();
int i=0;
int prev=0;
// assert value!=nil
int pos;
while( (pos=value.indexOf( "$", prev )) >= 0 ) {
if(pos>0)
sb.append( value.substring( prev, pos ) );
if( value.charAt( pos + 1 ) != '{' ) {
sb.append( value.charAt( pos + 1 ) );
prev=pos+2;
} else {
int endName=value.indexOf( '}', pos );
if( endName < 0 ) {
throw new BuildException("Syntax error in prop: " + value );
}
String n=value.substring( pos+2, endName );
String v= null;
if(proj!=null) v= InvocationHelper.getProperty( proj, n );
if( v==null && def!=null) v= InvocationHelper.getProperty( def, n);
//System.out.println("N: " + n + " " + " V:" + v);
if(v==null) v="";
sb.append( v );
prev=endName+1;
}
}
if( prev < value.length() ) sb.append( value.substring( prev ) );
// System.out.println("After replace: " + sb.toString());
// System.out.println("Before replace: " + value);
return sb.toString();
}
}