Return-Path: Mailing-List: contact tomcat-dev-help@jakarta.apache.org; run by ezmlm Delivered-To: mailing list tomcat-dev@jakarta.apache.org Received: (qmail 7983 invoked by uid 2016); 16 Nov 1999 00:41:58 -0000 Delivered-To: apcore-jakarta-tools-cvs@apache.org Received: (qmail 7953 invoked by uid 259); 16 Nov 1999 00:41:57 -0000 Date: 16 Nov 1999 00:41:57 -0000 Message-ID: <19991116004157.7952.qmail@hyperreal.org> From: costin@hyperreal.org To: jakarta-tools-cvs@apache.org Subject: 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(); } }