You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by st...@apache.org on 2002/02/01 08:22:56 UTC
cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs LoadFile.java
stevel 02/01/31 23:22:56
Modified: src/main/org/apache/tools/ant/taskdefs LoadFile.java
Log:
two new attrs to loadfile to make it more flexible in feeding other tasks
Revision Changes Path
1.6 +59 -8 jakarta-ant/src/main/org/apache/tools/ant/taskdefs/LoadFile.java
Index: LoadFile.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/LoadFile.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- LoadFile.java 20 Jan 2002 20:45:56 -0000 1.5
+++ LoadFile.java 1 Feb 2002 07:22:56 -0000 1.6
@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2001 The Apache Software Foundation. All rights
+ * Copyright (c) 2001-2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -56,14 +56,10 @@
import org.apache.tools.ant.Task;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.ProjectHelper;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStreamReader;
-import java.io.IOException;
-import java.io.BufferedInputStream;
+import java.io.*;
/**
* Load a file into a property
@@ -95,6 +91,16 @@
private String property = null;
+ /** flag to control if we flatten the file or no'
+ *
+ */
+ private boolean makeOneLine=false;
+
+ /**
+ * flag to control whether props get evaluated or not
+ */
+ private boolean evaluateProperties=false;
+
/**
* Encoding to use for filenames, defaults to the platform's default
* encoding. <p>
@@ -140,6 +146,22 @@
failOnError = fail;
}
+ /**
+ * setter to flatten the file to a single line
+ * @since 1.6
+ */
+ public void setMakeOneLine(boolean makeOneLine) {
+ this.makeOneLine=makeOneLine;
+ }
+
+ /**
+ * setter to eval properties.
+ * @since 1.6
+ */
+ public void setEvaluateProperties(boolean evaluateProperties) {
+ this.evaluateProperties=evaluateProperties;
+ }
+
/**
* read in a source file to a property
@@ -157,7 +179,7 @@
}
FileInputStream fis = null;
BufferedInputStream bis = null;
- InputStreamReader instream = null;
+ Reader instream = null;
log("loading "+srcFile+" into property "+property,Project.MSG_VERBOSE);
try {
long len = srcFile.length();
@@ -179,6 +201,12 @@
}
instream.read(buffer);
String text = new String(buffer);
+ if (makeOneLine) {
+ text=stripLineBreaks(text);
+ }
+ if(evaluateProperties) {
+ text=ProjectHelper.replaceProperties(project,text);
+ }
project.setNewProperty(property, text);
log("loaded "+buffer.length+" characters",Project.MSG_VERBOSE);
log(property+" := "+text,Project.MSG_DEBUG);
@@ -199,6 +227,29 @@
} catch (IOException ioex) {
}
}
+ }
+
+ /**
+ * strip out all line breaks from a string.
+ * @param source source
+ * This implementation always duplicates the string; it is nominally possible to probe
+ * the string first looking for any line breaks before bothering to do a copy. But we assume if
+ * the option is requested, then line breaks are probably in the source string.
+ */
+ protected String stripLineBreaks(String source) {
+ //Linebreaks. What do to on funny IBM mainframes with odd line endings?
+ String linebreaks="\r\n";
+ int len=source.length();
+
+ StringBuffer dest=new StringBuffer(len);
+ for(int i=0;i<len;++i) {
+ char ch=source.charAt(i);
+ if(linebreaks.indexOf(ch)==-1) {
+ dest.append(ch);
+ }
+ }
+ return new String(dest);
+
}
//end class
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs LoadFile.java
Posted by Steve Loughran <st...@iseran.com>.
----- Original Message -----
From: "Magesh Umasankar" <um...@apache.org>
To: "Ant Developers List" <an...@jakarta.apache.org>
Sent: Friday, February 01, 2002 15:02
Subject: Re: cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs
LoadFile.java
> From: <st...@apache.org>
>
> > + protected String stripLineBreaks(String source) {
> > + //Linebreaks. What do to on funny IBM mainframes with odd
line
> endings?
> > + String linebreaks="\r\n";
>
> Why are you not using System.getProperty("line.separator")
> instead? Or do you want \r stripped no matter
> what platform the file is under?
exactly. I want to be able to pull things like a file that comes off a <get>
request into a property and then act on it. But I could add that line
separator property too;
-steve
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs LoadFile.java
Posted by Magesh Umasankar <um...@apache.org>.
From: <st...@apache.org>
> + protected String stripLineBreaks(String source) {
> + //Linebreaks. What do to on funny IBM mainframes with odd line
endings?
> + String linebreaks="\r\n";
Why are you not using System.getProperty("line.separator")
instead? Or do you want \r stripped no matter
what platform the file is under?
> + int len=source.length();
> +
> + StringBuffer dest=new StringBuffer(len);
> + for(int i=0;i<len;++i) {
> + char ch=source.charAt(i);
> + if(linebreaks.indexOf(ch)==-1) {
> + dest.append(ch);
> + }
> + }
> + return new String(dest);
> +
> }
Cheers,
Magesh
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>