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>