How do you say in JavaScript, treat the following string as a literal string? In C# you can escape out the characters one at a time the same way as you do in JavaScript:
string myString = "C:\\Program Files\\JavaScript\\is\\goofy"; or you can tell it that the entire string is literal with an @: string myString = @"C:\Program Files\JavaScript\is\goofy"; Thanks, Eric ________________________________ From: Scot P. Floess <sflo...@nc.rr.com> To: Ant Users List <user@ant.apache.org> Sent: Thu, January 21, 2010 9:08:03 AM Subject: Re: AppendToProperty MacroDef Interesting... OK :( On Thu, 21 Jan 2010, Eric Fetzer wrote: > Same as tmpProp on the other side: > > main: > [echo] myProp is: C:\noDog\Hates\Big\Juicy\Bones > [echo] tmpProp is: C:\noDog\Hates\Big\Juicy\Bones > > > > > ________________________________ > From: Scot P. Floess <sflo...@nc.rr.com> > To: Ant Users List <user@ant.apache.org> > Sent: Thu, January 21, 2010 8:48:29 AM > Subject: Re: AppendToProperty MacroDef > > > Will you echo ${myProp} itself? For example before the first > propertyregex... > > Sorry, I don't have time right this minute to look at this and type in the > example :) > > > > On Thu, 21 Jan 2010, Eric Fetzer wrote: > >> And to leverage your \n example: >> >> <project default="main"> >> <taskdef resource="net/sf/antcontrib/antlib.xml"/> >> <property name="myProp" value="C:\noDog\Hates\Big\Juicy\Bones"/> >> <property name="myProp2" value="C:\\noDog\\Hates\\Big\\Juicy\\Bones"/> >> <property name="myProp3" value="C:\noDog\\Hates\Big\\Juicy\Bones"/> >> <target name="main"> >> <propertyregex property="tmpProp" input="${myProp}" override="true" >> regexp="\\" replace="\\\\" global="true"/> >> <echo message="tmpProp is: ${tmpProp}"/> >> <propertyregex property="tmpProp2" input="${myProp2}" override="true" >> regexp="\\" replace="\\\\" global="true"/> >> <echo message="tmpProp is: ${tmpProp2}"/> >> <propertyregex property="tmpProp3" input="${myProp3}" override="true" >> regexp="\\" replace="\\\\" global="true"/> >> <echo message="tmpProp is: ${tmpProp3}"/> >> <propertyregex property="tmpProp4" input="${myProp}" override="true" >> regexp="\" replace="\\" global="true"/> >> <echo message="tmpProp is: ${tmpProp4}"/> >> </target> >> </project> >> >> Produces: >> >> main: >> [echo] tmpProp is: C:\noDog\Hates\Big\Juicy\Bones >> [echo] tmpProp is: C:\\noDog\\Hates\\Big\\Juicy\\Bones >> [echo] tmpProp is: C:\noDog\\Hates\Big\\Juicy\Bones >> BUILD FAILED >> 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) >> Total time: 0 seconds >> >> >> >> >> ________________________________ >> From: Eric Fetzer <elstonk...@yahoo.com> >> To: Ant Users List <user@ant.apache.org> >> Sent: Thu, January 21, 2010 8:28:07 AM >> Subject: Re: AppendToProperty MacroDef >> >> Let me give you a better example Scot. Substitution seems to ignore escape >> characters entirely. As the task is written now, I don't imagine there is a >> way to replace \'s. >> >> <project default="main"> >> <taskdef resource="net/sf/antcontrib/antlib.xml"/> >> <property name="myProp" value="C:\myDog\Loves\Big\Juicy\Bones"/> >> <property name="myProp2" value="C:\\myDog\\Loves\\Big\\Juicy\\Bones"/> >> <property name="myProp3" 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}"/> >> <propertyregex property="tmpProp2" input="${myProp2}" override="true" >> regexp="\\" replace="\\\\" global="true"/> >> <echo message="tmpProp2 is: ${tmpProp2}"/> >> <propertyregex property="tmpProp3" input="${myProp3}" override="true" >> regexp="\\" replace="\\\\" global="true"/> >> <echo message="tmpProp3 is: ${tmpProp3}"/> >> <propertyregex property="tmpProp4" input="${myProp}" override="true" >> regexp="\" replace="\\" global="true"/> >> <echo message="tmpProp4 is: ${tmpProp4}"/> >> </target> >> </project> >> >> Produces: >> >> main: >> [echo] tmpProp is: C:\myDog\Loves\Big\Juicy\Bones >> [echo] tmpProp2 is: C:\\myDog\\Loves\\Big\\Juicy\\Bones >> [echo] tmpProp3 is: C:\myDog\\Loves\Big\\Juicy\Bones >> BUILD FAILED >> 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) >> Total time: 0 seconds >> >> >> >> >> ________________________________ >> From: Scot P. Floess <sflo...@nc.rr.com> >> To: Ant Users List <user@ant.apache.org> >> Sent: Thu, January 21, 2010 8:09:33 AM >> Subject: Re: AppendToProperty MacroDef >> >> >> I might be wrong but I think the output you are seeing is correct - as in >> the \ is escapeed thereby printing only 1 \ not 2... For example if you >> consider \n it is emitted as a newline...but if you do \\n the output will >> be a literal \n (as in a backslash followed by the letter n)... Try >> printing out the property when you don't do the regex for \\\\ - for >> example something like: >> >> C:\foo\nbar >> >> I bet the output has a new line in it ;) >> >> On Thu, 21 Jan 2010, Eric Fetzer wrote: >> >>> 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" <sflo...@nc.rr.com> 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 <sflo...@nc.rr.com> >>> To: Ant Users List <user@ant.apache.org> >>> 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 <elstonk...@yahoo.com> >>> To: Ant Users List <user@ant.apache.org> >>> 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" <sflo...@nc.rr.com> 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: user-unsubscr...@ant.apache.org >>> For additional commands, e-mail: user-h...@ant.apache.org >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: user-unsubscr...@ant.apache.org >>> For additional commands, e-mail: user-h...@ant.apache.org >>> 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: user-unsubscr...@ant.apache.org >>> For additional commands, e-mail: user-h...@ant.apache.org >>> >>> 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: user-unsubscr...@ant.apache.org >>> For additional commands, e-mail: user-h...@ant.apache.org >>> >>> >>> >>> >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: user-unsubscr...@ant.apache.org >>> For additional commands, e-mail: user-h...@ant.apache.org >>> >>> >> >> 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: user-unsubscr...@ant.apache.org >> For additional commands, e-mail: user-h...@ant.apache.org > > 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: user-unsubscr...@ant.apache.org > For additional commands, e-mail: user-h...@ant.apache.org 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: user-unsubscr...@ant.apache.org For additional commands, e-mail: user-h...@ant.apache.org