Yeah, that's what I did.  The small repro just shows that it doesn't affect the 
string with the \'s whatsoever...  If there were actual instances of \\ in 
there maybe it would do something, but there are only \'s.  Seems like for the 
saving down of the property, it uses escape characters, but for the 
substitution part, it doesn't.  I'd call it a bug I think.



On Jan 21, 2010, at 7:10 AM, "Scot P. Floess" <[email protected]> wrote:


OK, so in looking more closely, what I meant to say was to do the 
<propertyregex property="tmpProp"  first and then the one you had initially 
afterward using the first :)

If I get a free moment today I'll see if I can get it to work...  Little busy 
at the moment - maybe at lunch today :)

On Wed, 20 Jan 2010, Scot P. Floess wrote:


Yeah, I'll give it some thought and see if there is something I can think of 
tomorrow as well :)

On Wed, 20 Jan 2010, Eric Fetzer wrote:

I tried this Scot, but it didn't do it.  So here's an easy repro:
<project default="main">
<taskdef resource="net/sf/antcontrib/antlib.xml"/>
<property name="myProp" value="C:\myDog\Loves\Big\Juicy\Bones"/>
  <target name="main">
    <propertyregex property="tmpProp" input="${myProp}" override="true" 
regexp="\\" replace="\\\\" global="true"/>
    <echo message="tmpProp is:  ${tmpProp}"/>
  </target>
</project>
It produces:
[echo] tmpProp is:  C:\myDog\Loves\Big\Juicy\Bones
If I change it to:
<project default="main">
<taskdef resource="net/sf/antcontrib/antlib.xml"/>
<property name="myProp" value="C:\myDog\Loves\Big\Juicy\Bones"/>
  <target name="main">
    <propertyregex property="tmpProp" input="${myProp}" override="true" 
regexp="\" replace="\\" global="true"/>
    <echo message="tmpProp is:  ${tmpProp}"/>
  </target>
</project>
it crashes with:
java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
 ^
        at java.util.regex.Pattern.error(Pattern.java:1650)
        at java.util.regex.Pattern.compile(Pattern.java:1403)
        at java.util.regex.Pattern.<init>(Pattern.java:1124)
        at java.util.regex.Pattern.compile(Pattern.java:840)
        at org.apache.tools.ant.util.regexp.Jdk14RegexpMatcher.getCompiledPatter
n(Jdk14RegexpMatcher.java:67)
        at org.apache.tools.ant.util.regexp.Jdk14RegexpMatcher.matches(Jdk14Rege
xpMatcher.java:94)
        at net.sf.antcontrib.property.RegexTask.doReplace(RegexTask.java:135)
        at net.sf.antcontrib.property.RegexTask.execute(RegexTask.java:192)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav
a:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:357)
        at org.apache.tools.ant.Target.performTasks(Target.java:385)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExe
cutor.java:41)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
        at org.apache.tools.ant.Main.runBuild(Main.java:758)
        at org.apache.tools.ant.Main.startAnt(Main.java:217)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
I don't know that what we're trying to do is possible with propertyregex.  It 
seems it may need some scripting.  All I'm really trying to do is:
if(property1.indexOf(string1) >= 0) then return true;
I'll take a look at how to achieve this tomorrow.  Thanks!
Eric
________________________________
From: Scot P. Floess <[email protected]>
To: Ant Users List <[email protected]>
Sent: Wed, January 20, 2010 2:21:41 PM
Subject: Re: AppendToProperty MacroDef
Mmm - you may need to do this before your first propertyregex
<propertyregex property="tmpProp" input="${propertyList}" override="true" 
regexp="\\" replace="\\\\" globale="true"/>
Basically the above will escape the \
On Wed, 20 Jan 2010, Eric Fetzer wrote:
Well, out of that error and on to the next.  It seems that PropertyRegEx has an 
issue with the "\" as well.  I wrote a different macrodef that works without 
slashes, but not with slashes.  Anyone see a better way?
  <macrodef name="md.isInPropList" description="Find if a dir is a subdir of 
any dir in the list">
    <attribute name="var.item"/>
    <attribute name="var.itemList"/>
    <sequential>
      <!--First get rid of any values left from previous calls to this md and 
set to false-->
      <unset name="isInList"/>
      <property name="isInList" value="false"/>
      <!--For loop on each item in itemlist to see if any of them are true-->
      <for list="@{var.itemList}" param="item">
        <sequential>
          <!--Make sure regExResult isn't left over-->
          <unset name="regExResult"/>
          <!--Regex expression that will result in the value if it is in 
there-->
          <propertyregex property="regExResult"
            input="${propertyList}"
            override="true"
            regexp=".*(@{item})"
            select="\1"
            casesensitive="false"
          />
          <!--If regExResult is set to the value of the item, we have a match-->
          <if>
            <equals arg1="${regExResult}" arg2="${item}"/>
            <then>
              <unset name="isInList"/>
              <property name="isInList" value="true"/>
            </then>
          </if>
        </sequential>
      </for>
    </sequential>
  </macrodef>
Thanks,
Eric
________________________________
From: Eric Fetzer <[email protected]>
To: Ant Users List <[email protected]>
Sent: Wed, January 20, 2010 1:40:34 PM
Subject: Re: AppendToProperty MacroDef
Beautiful, thanks Scott!
On Jan 20, 2010, at 1:18 PM, "Scot P. Floess" <[email protected]> wrote:
You could use Ant Contrib's var task - probably be a little easier :)
<macrodef name="md.AppendProperty">
<attribute name="var.propertyName"/>
<attribute name="var.stringAppend"/>
<sequential>
  <var name="@{var.propertyName}" 
value="$...@{var.propertyname}}@{var.stringAppend}"/>
</sequential>
</macrodef>
On Wed, 20 Jan 2010, Eric Fetzer wrote:
Hi all.  I wrote a MacroDef to append a string to a property.  All works as 
planned until you slip a "\" in there and then it gets jacked up.  My 
javascripting has MUCH to be desired.  Any help?
  <macrodef name="md.AppendProperty">
    <attribute name="var.propertyName"/>
    <attribute name="var.stringAppend"/>
    <sequential>
      <script language="javascript"> <![CDATA[
        curVal=project.getProperty("@{var.propertyName}");
        project.setProperty("@{var.propertyName}",curVal+"@{var.stringAppend}");
        ]]>
      </script>
    </sequential>
  </macrodef>
Thanks,
Eric
Scot P. Floess
27 Lake Royale
Louisburg, NC  27549
252-478-8087 (Home)
919-890-8117 (Work)
Chief Architect JPlate  http://sourceforge.net/projects/jplate
Chief Architect JavaPIM  http://sourceforge.net/projects/javapim
Architect Keros          http://sourceforge.net/projects/keros
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
      ---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
Scot P. Floess
27 Lake Royale
Louisburg, NC  27549
252-478-8087 (Home)
919-890-8117 (Work)
Chief Architect JPlate  http://sourceforge.net/projects/jplate
Chief Architect JavaPIM  http://sourceforge.net/projects/javapim
Architect Keros          http://sourceforge.net/projects/keros
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Scot P. Floess
27 Lake Royale
Louisburg, NC  27549

252-478-8087 (Home)
919-890-8117 (Work)

Chief Architect JPlate   http://sourceforge.net/projects/jplate
Chief Architect JavaPIM  http://sourceforge.net/projects/javapim

Architect Keros          http://sourceforge.net/projects/keros


Scot P. Floess
27 Lake Royale
Louisburg, NC  27549

252-478-8087 (Home)
919-890-8117 (Work)

Chief Architect JPlate   http://sourceforge.net/projects/jplate
Chief Architect JavaPIM  http://sourceforge.net/projects/javapim

Architect Keros          http://sourceforge.net/projects/keros

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



      


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to