Positional argument collection
Say I have an array of values, arbitrary length, that I want to pass as the arguments to a method. For example, with this: positionalArgs = ['foo', 'bar', 42]; // this varies, may be any length I want to make this call: SomeComponent.someMethod('foo', 'bar', 42); Is there a positional equivalent to argumentCollection, or some other language construct that I don't know about to do this? If the arguments were in a structure, I could pass it as the argumentCollection, but I don't know how to do this by position in a clean way. Only thing I thought of is a switch statement with some finite number of cases, each of which calls the method with a specific number of arguments, like this (partial): case 2: SomeComponent.someMethod(positionalArgs[1], positionalArgs[2]); break; case 3: SomeComponent.someMethod(positionalArgs[1], positionalArgs[2], positionalArgs[3]); break; etc... Any thoughts? Thanks, Dave ~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337898 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm
Re: Positional argument collection
I'm not exactly sure what you're asking but would some variation of this work for you? SomeComponent.someMethod(ArrayToList(positionalArgs)); Of course you may need to qualify the list etc if you are passing strings, but I think that suits your example. On Wed, Oct 6, 2010 at 10:54 AM, enigment enigm...@gmail.com wrote: Say I have an array of values, arbitrary length, that I want to pass as the arguments to a method. For example, with this: positionalArgs = ['foo', 'bar', 42]; // this varies, may be any length I want to make this call: SomeComponent.someMethod('foo', 'bar', 42); Is there a positional equivalent to argumentCollection, or some other language construct that I don't know about to do this? If the arguments were in a structure, I could pass it as the argumentCollection, but I don't know how to do this by position in a clean way. Only thing I thought of is a switch statement with some finite number of cases, each of which calls the method with a specific number of arguments, like this (partial): case 2: SomeComponent.someMethod(positionalArgs[1], positionalArgs[2]); break; case 3: SomeComponent.someMethod(positionalArgs[1], positionalArgs[2], positionalArgs[3]); break; etc... Any thoughts? Thanks, Dave ~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337899 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm
Re: Positional argument collection
Thanks for chiming in Michael. Using ArrayToList would pass all three values as a single string. I'm looking for a generic way to pass each array element as an individual argument, regardless of how many there are. Take another look at the examples I gave. Dave On Wed, Oct 6, 2010 at 11:02 AM, Michael Grant mgr...@modus.bz wrote: I'm not exactly sure what you're asking but would some variation of this work for you? SomeComponent.someMethod(ArrayToList(positionalArgs)); Of course you may need to qualify the list etc if you are passing strings, but I think that suits your example. On Wed, Oct 6, 2010 at 10:54 AM, enigment enigm...@gmail.com wrote: Say I have an array of values, arbitrary length, that I want to pass as the arguments to a method. For example, with this: positionalArgs = ['foo', 'bar', 42]; // this varies, may be any length I want to make this call: SomeComponent.someMethod('foo', 'bar', 42); Is there a positional equivalent to argumentCollection, or some other language construct that I don't know about to do this? If the arguments were in a structure, I could pass it as the argumentCollection, but I don't know how to do this by position in a clean way. Only thing I thought of is a switch statement with some finite number of cases, each of which calls the method with a specific number of arguments, like this (partial): case 2: SomeComponent.someMethod(positionalArgs[1], positionalArgs[2]); break; case 3: SomeComponent.someMethod(positionalArgs[1], positionalArgs[2], positionalArgs[3]); break; etc... Any thoughts? Thanks, Dave ~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337901 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm
RE: Positional argument collection
This is untested... SomeComponent.someMethod(evaluate(ArrayToList(positionalArgs))); -Original Message- From: enigment [mailto:enigm...@gmail.com] Sent: Wednesday, October 06, 2010 10:48 AM To: cf-talk Subject: Re: Positional argument collection Thanks for chiming in Michael. Using ArrayToList would pass all three values as a single string. I'm looking for a generic way to pass each array element as an individual argument, regardless of how many there are. Take another look at the examples I gave. Dave On Wed, Oct 6, 2010 at 11:02 AM, Michael Grant mgr...@modus.bz wrote: I'm not exactly sure what you're asking but would some variation of this work for you? SomeComponent.someMethod(ArrayToList(positionalArgs)); Of course you may need to qualify the list etc if you are passing strings, but I think that suits your example. On Wed, Oct 6, 2010 at 10:54 AM, enigment enigm...@gmail.com wrote: Say I have an array of values, arbitrary length, that I want to pass as the arguments to a method. For example, with this: positionalArgs = ['foo', 'bar', 42]; // this varies, may be any length I want to make this call: SomeComponent.someMethod('foo', 'bar', 42); Is there a positional equivalent to argumentCollection, or some other language construct that I don't know about to do this? If the arguments were in a structure, I could pass it as the argumentCollection, but I don't know how to do this by position in a clean way. Only thing I thought of is a switch statement with some finite number of cases, each of which calls the method with a specific number of arguments, like this (partial): case 2: SomeComponent.someMethod(positionalArgs[1], positionalArgs[2]); break; case 3: SomeComponent.someMethod(positionalArgs[1], positionalArgs[2], positionalArgs[3]); break; etc... Any thoughts? Thanks, Dave ~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337902 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm
Re: Positional argument collection
So parse the list inside your method. Or create an argument collection out of your array and pass it in. On Wed, Oct 6, 2010 at 11:47 AM, enigment enigm...@gmail.com wrote: Thanks for chiming in Michael. Using ArrayToList would pass all three values as a single string. I'm looking for a generic way to pass each array element as an individual argument, regardless of how many there are. Take another look at the examples I gave. Dave On Wed, Oct 6, 2010 at 11:02 AM, Michael Grant mgr...@modus.bz wrote: I'm not exactly sure what you're asking but would some variation of this work for you? SomeComponent.someMethod(ArrayToList(positionalArgs)); Of course you may need to qualify the list etc if you are passing strings, but I think that suits your example. On Wed, Oct 6, 2010 at 10:54 AM, enigment enigm...@gmail.com wrote: Say I have an array of values, arbitrary length, that I want to pass as the arguments to a method. For example, with this: positionalArgs = ['foo', 'bar', 42]; // this varies, may be any length I want to make this call: SomeComponent.someMethod('foo', 'bar', 42); Is there a positional equivalent to argumentCollection, or some other language construct that I don't know about to do this? If the arguments were in a structure, I could pass it as the argumentCollection, but I don't know how to do this by position in a clean way. Only thing I thought of is a switch statement with some finite number of cases, each of which calls the method with a specific number of arguments, like this (partial): case 2: SomeComponent.someMethod(positionalArgs[1], positionalArgs[2]); break; case 3: SomeComponent.someMethod(positionalArgs[1], positionalArgs[2], positionalArgs[3]); break; etc... Any thoughts? Thanks, Dave ~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337903 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm
Re: Positional argument collection
As you can see anything you put in the args that's derived from CF is going to be treated as arg1. cfset positionalArgs = ['foo', 'bar', 42] cfdump var=#positionalArgs# cfdump var=#ListQualify(ArrayToList(positionalArgs),')# cfset myFunction(ListQualify(ArrayToList(positionalArgs),')) cffunction name=myFunction cfargument name=arg1 required=false default=not defined cfargument name=arg2 required=false default=not defined cfargument name=arg3 required=false default=not defined cfdump var=arg1: #arg1# cfdump var=arg2: #arg2# cfdump var=arg3: #arg3# /cffunction ~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337906 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm
RE: Positional argument collection
Whoops.. read the rest of the email below. var I = positionalArgs.iterator(); var arg = ; while( i.hasNext() ) { arg = i.next(); SomeComponent.someMethod(arg); } That will call someMethod() for each array value. You could use a For loop with i LTE arrayLen(positionalArg) if you don't want to use iterator(). -Original Message- From: enigment [mailto:enigm...@gmail.com] Sent: Wednesday, October 06, 2010 10:48 AM To: cf-talk Subject: Re: Positional argument collection Thanks for chiming in Michael. Using ArrayToList would pass all three values as a single string. I'm looking for a generic way to pass each array element as an individual argument, regardless of how many there are. Take another look at the examples I gave. Dave On Wed, Oct 6, 2010 at 11:02 AM, Michael Grant mgr...@modus.bz wrote: I'm not exactly sure what you're asking but would some variation of this work for you? SomeComponent.someMethod(ArrayToList(positionalArgs)); Of course you may need to qualify the list etc if you are passing strings, but I think that suits your example. On Wed, Oct 6, 2010 at 10:54 AM, enigment enigm...@gmail.com wrote: Say I have an array of values, arbitrary length, that I want to pass as the arguments to a method. For example, with this: positionalArgs = ['foo', 'bar', 42]; // this varies, may be any length I want to make this call: SomeComponent.someMethod('foo', 'bar', 42); Is there a positional equivalent to argumentCollection, or some other language construct that I don't know about to do this? If the arguments were in a structure, I could pass it as the argumentCollection, but I don't know how to do this by position in a clean way. Only thing I thought of is a switch statement with some finite number of cases, each of which calls the method with a specific number of arguments, like this (partial): case 2: SomeComponent.someMethod(positionalArgs[1], positionalArgs[2]); break; case 3: SomeComponent.someMethod(positionalArgs[1], positionalArgs[2], positionalArgs[3]); break; etc... Any thoughts? Thanks, Dave ~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337907 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm
Re: Positional argument collection
@Michael: What I'm looking for is the positional equivalent of argumentCollection. If it wasn't for that, you'd think the same about passing a structure of arguments -- any object you pass will be treated as a single argument. But argumentCollection trumps that. I even tried a structure with keys 1, 2, 3, and passing that as argumentCollection (unnamed arguments appear inside the function as 1, 2, and 3 if you dump arguments), no joy. @Jason: Clearly, calling a method three times, each time with one argument, is very different than calling it once with all three. Say they're search fields, lastName, FirstName, ZIP; you want the search to run with all three of them in place, not separately for each one. (Not sure why you went with an iterator rather than just indexing over the array, but it doesn't matter, not what I need to do.) Thanks for the ideas though. This just may not be possible. Dave On Wed, Oct 6, 2010 at 12:15 PM, Jason Durham jdur...@cti-stl.com wrote: Whoops.. read the rest of the email below. var I = positionalArgs.iterator(); var arg = ; while( i.hasNext() ) { arg = i.next(); SomeComponent.someMethod(arg); } That will call someMethod() for each array value. You could use a For loop with i LTE arrayLen(positionalArg) if you don't want to use iterator(). -Original Message- From: enigment [mailto:enigm...@gmail.com] Sent: Wednesday, October 06, 2010 10:48 AM To: cf-talk Subject: Re: Positional argument collection Thanks for chiming in Michael. Using ArrayToList would pass all three values as a single string. I'm looking for a generic way to pass each array element as an individual argument, regardless of how many there are. Take another look at the examples I gave. Dave On Wed, Oct 6, 2010 at 11:02 AM, Michael Grant mgr...@modus.bz wrote: I'm not exactly sure what you're asking but would some variation of this work for you? SomeComponent.someMethod(ArrayToList(positionalArgs)); Of course you may need to qualify the list etc if you are passing strings, but I think that suits your example. On Wed, Oct 6, 2010 at 10:54 AM, enigment enigm...@gmail.com wrote: Say I have an array of values, arbitrary length, that I want to pass as the arguments to a method. For example, with this: positionalArgs = ['foo', 'bar', 42]; // this varies, may be any length I want to make this call: SomeComponent.someMethod('foo', 'bar', 42); Is there a positional equivalent to argumentCollection, or some other language construct that I don't know about to do this? If the arguments were in a structure, I could pass it as the argumentCollection, but I don't know how to do this by position in a clean way. Only thing I thought of is a switch statement with some finite number of cases, each of which calls the method with a specific number of arguments, like this (partial): case 2: SomeComponent.someMethod(positionalArgs[1], positionalArgs[2]); break; case 3: SomeComponent.someMethod(positionalArgs[1], positionalArgs[2], positionalArgs[3]); break; etc... Any thoughts? Thanks, Dave ~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337909 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm
Re: Positional argument collection
Dave, Why don't you just pass in the array? cfset positionalArgs = ['foo', 'bar', 42] / cfset myFunction(positionalArgs) / cffunction name=myFunction cfargument name=positionalArgs type=array cfloop from=1 to=#arraylen(positionalArgs)# index=x cfdump var=#x#: #positionalArgs[x]#br / /cfloop /cffunction On Wed, Oct 6, 2010 at 12:38 PM, enigment enigm...@gmail.com wrote: @Michael: What I'm looking for is the positional equivalent of argumentCollection. If it wasn't for that, you'd think the same about passing a structure of arguments -- any object you pass will be treated as a single argument. But argumentCollection trumps that. I even tried a structure with keys 1, 2, 3, and passing that as argumentCollection (unnamed arguments appear inside the function as 1, 2, and 3 if you dump arguments), no joy. @Jason: Clearly, calling a method three times, each time with one argument, is very different than calling it once with all three. Say they're search fields, lastName, FirstName, ZIP; you want the search to run with all three of them in place, not separately for each one. (Not sure why you went with an iterator rather than just indexing over the array, but it doesn't matter, not what I need to do.) Thanks for the ideas though. This just may not be possible. Dave On Wed, Oct 6, 2010 at 12:15 PM, Jason Durham jdur...@cti-stl.com wrote: Whoops.. read the rest of the email below. var I = positionalArgs.iterator(); var arg = ; while( i.hasNext() ) { arg = i.next(); SomeComponent.someMethod(arg); } That will call someMethod() for each array value. You could use a For loop with i LTE arrayLen(positionalArg) if you don't want to use iterator(). -Original Message- From: enigment [mailto:enigm...@gmail.com] Sent: Wednesday, October 06, 2010 10:48 AM To: cf-talk Subject: Re: Positional argument collection Thanks for chiming in Michael. Using ArrayToList would pass all three values as a single string. I'm looking for a generic way to pass each array element as an individual argument, regardless of how many there are. Take another look at the examples I gave. Dave On Wed, Oct 6, 2010 at 11:02 AM, Michael Grant mgr...@modus.bz wrote: I'm not exactly sure what you're asking but would some variation of this work for you? SomeComponent.someMethod(ArrayToList(positionalArgs)); Of course you may need to qualify the list etc if you are passing strings, but I think that suits your example. On Wed, Oct 6, 2010 at 10:54 AM, enigment enigm...@gmail.com wrote: Say I have an array of values, arbitrary length, that I want to pass as the arguments to a method. For example, with this: positionalArgs = ['foo', 'bar', 42]; // this varies, may be any length I want to make this call: SomeComponent.someMethod('foo', 'bar', 42); Is there a positional equivalent to argumentCollection, or some other language construct that I don't know about to do this? If the arguments were in a structure, I could pass it as the argumentCollection, but I don't know how to do this by position in a clean way. Only thing I thought of is a switch statement with some finite number of cases, each of which calls the method with a specific number of arguments, like this (partial): case 2: SomeComponent.someMethod(positionalArgs[1], positionalArgs[2]); break; case 3: SomeComponent.someMethod(positionalArgs[1], positionalArgs[2], positionalArgs[3]); break; etc... Any thoughts? Thanks, Dave ~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337910 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm
Re: Positional argument collection
It's unusual for a method to take an array of its arguments, rather than individual ones. Situation is something like a dispatcher; the methods already have defined arguments, say Widgets.search(widgetName, widgetCategory, widgetID). It'd be pretty weird for it to take an array containing those three arguments. The layer I'm talking about wants to call that, but only has an array of argument values, in order. Not to be cranky, but while there's room for debate on why I want to do this, this isn't that conversation. If there's no more elegant approach than the switch strategy I mentioned, I'll probably ditch this entire route. I first wanted to check if anyone could think of a way to accomplish this in the CFML language, out of curiosity and to maybe learn something that might be useful some day, as well to get it done -- there's lots of smart and experienced folks out there. I didn't mean to discuss whether it's worth doing. Thanks, Dave On Wed, Oct 6, 2010 at 12:42 PM, Michael Grant mgr...@modus.bz wrote: Dave, Why don't you just pass in the array? cfset positionalArgs = ['foo', 'bar', 42] / cfset myFunction(positionalArgs) / cffunction name=myFunction cfargument name=positionalArgs type=array cfloop from=1 to=#arraylen(positionalArgs)# index=x cfdump var=#x#: #positionalArgs[x]#br / /cfloop /cffunction On Wed, Oct 6, 2010 at 12:38 PM, enigment enigm...@gmail.com wrote: @Michael: What I'm looking for is the positional equivalent of argumentCollection. If it wasn't for that, you'd think the same about passing a structure of arguments -- any object you pass will be treated as a single argument. But argumentCollection trumps that. I even tried a structure with keys 1, 2, 3, and passing that as argumentCollection (unnamed arguments appear inside the function as 1, 2, and 3 if you dump arguments), no joy. @Jason: Clearly, calling a method three times, each time with one argument, is very different than calling it once with all three. Say they're search fields, lastName, FirstName, ZIP; you want the search to run with all three of them in place, not separately for each one. (Not sure why you went with an iterator rather than just indexing over the array, but it doesn't matter, not what I need to do.) Thanks for the ideas though. This just may not be possible. Dav ~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337912 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm
Re: Positional argument collection
It's also pretty unusual to not have any idea how many arguments you are passing into a method. There are many more elegant approaches to your switch suggestion. The primary one being writing code that has structure and passes in the expected amount of arguments each time. Another one would be that since you know how many arguments you are expecting in the method perhaps write a function to loop over and pad your array with null values if they aren't defined. Then your call to the method can always pass in the expected amount of arguments. On Wed, Oct 6, 2010 at 1:13 PM, enigment enigm...@gmail.com wrote: It's unusual for a method to take an array of its arguments, rather than individual ones. Situation is something like a dispatcher; the methods already have defined arguments, say Widgets.search(widgetName, widgetCategory, widgetID). It'd be pretty weird for it to take an array containing those three arguments. The layer I'm talking about wants to call that, but only has an array of argument values, in order. Not to be cranky, but while there's room for debate on why I want to do this, this isn't that conversation. If there's no more elegant approach than the switch strategy I mentioned, I'll probably ditch this entire route. I first wanted to check if anyone could think of a way to accomplish this in the CFML language, out of curiosity and to maybe learn something that might be useful some day, as well to get it done -- there's lots of smart and experienced folks out there. I didn't mean to discuss whether it's worth doing. Thanks, Dave On Wed, Oct 6, 2010 at 12:42 PM, Michael Grant mgr...@modus.bz wrote: Dave, Why don't you just pass in the array? cfset positionalArgs = ['foo', 'bar', 42] / cfset myFunction(positionalArgs) / cffunction name=myFunction cfargument name=positionalArgs type=array cfloop from=1 to=#arraylen(positionalArgs)# index=x cfdump var=#x#: #positionalArgs[x]#br / /cfloop /cffunction On Wed, Oct 6, 2010 at 12:38 PM, enigment enigm...@gmail.com wrote: @Michael: What I'm looking for is the positional equivalent of argumentCollection. If it wasn't for that, you'd think the same about passing a structure of arguments -- any object you pass will be treated as a single argument. But argumentCollection trumps that. I even tried a structure with keys 1, 2, 3, and passing that as argumentCollection (unnamed arguments appear inside the function as 1, 2, and 3 if you dump arguments), no joy. @Jason: Clearly, calling a method three times, each time with one argument, is very different than calling it once with all three. Say they're search fields, lastName, FirstName, ZIP; you want the search to run with all three of them in place, not separately for each one. (Not sure why you went with an iterator rather than just indexing over the array, but it doesn't matter, not what I need to do.) Thanks for the ideas though. This just may not be possible. Dav ~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337913 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm
Re: Positional argument collection
Imagine an SES URL processor somewhat analogous to what Django provides, with a regex match that captures specific segments of the incoming URL and passes them to the requested method. Yes I know about ColdCourse, and the related ColdBox plugin etc, I was just thinking about alternate approaches. So yes, maybe it's unusual, but not irrational, or due to lack of structure in my code. Please, can we not debate my motivation any more? If there are any actual answers to the original question, I'd be interested in hearing them, but frankly I doubt it. I've been doing CF for quite a while, and didn't know of one, so I thought I'd ask around, but this keeps focusing on larger issues. That's a Good Thing in many cases, but actually not here. I'm asking if there's a language feature I'm not aware of to accomplish this, nothing more. Dave On Wed, Oct 6, 2010 at 1:34 PM, Michael Grant mgr...@modus.bz wrote: It's also pretty unusual to not have any idea how many arguments you are passing into a method. There are many more elegant approaches to your switch suggestion. The primary one being writing code that has structure and passes in the expected amount of arguments each time. Another one would be that since you know how many arguments you are expecting in the method perhaps write a function to loop over and pad your array with null values if they aren't defined. Then your call to the method can always pass in the expected amount of arguments. On Wed, Oct 6, 2010 at 1:13 PM, enigment enigm...@gmail.com wrote: It's unusual for a method to take an array of its arguments, rather than individual ones. Situation is something like a dispatcher; the methods already have defined arguments, say Widgets.search(widgetName, widgetCategory, widgetID). It'd be pretty weird for it to take an array containing those three arguments. The layer I'm talking about wants to call that, but only has an array of argument values, in order. Not to be cranky, but while there's room for debate on why I want to do this, this isn't that conversation. If there's no more elegant approach than the switch strategy I mentioned, I'll probably ditch this entire route. I first wanted to check if anyone could think of a way to accomplish this in the CFML language, out of curiosity and to maybe learn something that might be useful some day, as well to get it done -- there's lots of smart and experienced folks out there. I didn't mean to discuss whether it's worth doing. Thanks, Dave On Wed, Oct 6, 2010 at 12:42 PM, Michael Grant mgr...@modus.bz wrote: Dave, Why don't you just pass in the array? cfset positionalArgs = ['foo', 'bar', 42] / cfset myFunction(positionalArgs) / cffunction name=myFunction cfargument name=positionalArgs type=array cfloop from=1 to=#arraylen(positionalArgs)# index=x cfdump var=#x#: #positionalArgs[x]#br / /cfloop /cffunction On Wed, Oct 6, 2010 at 12:38 PM, enigment enigm...@gmail.com wrote: @Michael: What I'm looking for is the positional equivalent of argumentCollection. If it wasn't for that, you'd think the same about passing a structure of arguments -- any object you pass will be treated as a single argument. But argumentCollection trumps that. I even tried a structure with keys 1, 2, 3, and passing that as argumentCollection (unnamed arguments appear inside the function as 1, 2, and 3 if you dump arguments), no joy. @Jason: Clearly, calling a method three times, each time with one argument, is very different than calling it once with all three. Say they're search fields, lastName, FirstName, ZIP; you want the search to run with all three of them in place, not separately for each one. (Not sure why you went with an iterator rather than just indexing over the array, but it doesn't matter, not what I need to do.) Thanks for the ideas though. This just may not be possible. Dav ~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337914 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm
Re: Positional argument collection
I gave you a perfectly viable, easy to implement solution. On Wed, Oct 6, 2010 at 1:55 PM, enigment enigm...@gmail.com wrote: Imagine an SES URL processor somewhat analogous to what Django provides, with a regex match that captures specific segments of the incoming URL and passes them to the requested method. Yes I know about ColdCourse, and the related ColdBox plugin etc, I was just thinking about alternate approaches. So yes, maybe it's unusual, but not irrational, or due to lack of structure in my code. Please, can we not debate my motivation any more? If there are any actual answers to the original question, I'd be interested in hearing them, but frankly I doubt it. I've been doing CF for quite a while, and didn't know of one, so I thought I'd ask around, but this keeps focusing on larger issues. That's a Good Thing in many cases, but actually not here. I'm asking if there's a language feature I'm not aware of to accomplish this, nothing more. Dave On Wed, Oct 6, 2010 at 1:34 PM, Michael Grant mgr...@modus.bz wrote: It's also pretty unusual to not have any idea how many arguments you are passing into a method. There are many more elegant approaches to your switch suggestion. The primary one being writing code that has structure and passes in the expected amount of arguments each time. Another one would be that since you know how many arguments you are expecting in the method perhaps write a function to loop over and pad your array with null values if they aren't defined. Then your call to the method can always pass in the expected amount of arguments. On Wed, Oct 6, 2010 at 1:13 PM, enigment enigm...@gmail.com wrote: It's unusual for a method to take an array of its arguments, rather than individual ones. Situation is something like a dispatcher; the methods already have defined arguments, say Widgets.search(widgetName, widgetCategory, widgetID). It'd be pretty weird for it to take an array containing those three arguments. The layer I'm talking about wants to call that, but only has an array of argument values, in order. Not to be cranky, but while there's room for debate on why I want to do this, this isn't that conversation. If there's no more elegant approach than the switch strategy I mentioned, I'll probably ditch this entire route. I first wanted to check if anyone could think of a way to accomplish this in the CFML language, out of curiosity and to maybe learn something that might be useful some day, as well to get it done -- there's lots of smart and experienced folks out there. I didn't mean to discuss whether it's worth doing. Thanks, Dave On Wed, Oct 6, 2010 at 12:42 PM, Michael Grant mgr...@modus.bz wrote: Dave, Why don't you just pass in the array? cfset positionalArgs = ['foo', 'bar', 42] / cfset myFunction(positionalArgs) / cffunction name=myFunction cfargument name=positionalArgs type=array cfloop from=1 to=#arraylen(positionalArgs)# index=x cfdump var=#x#: #positionalArgs[x]#br / /cfloop /cffunction On Wed, Oct 6, 2010 at 12:38 PM, enigment enigm...@gmail.com wrote: @Michael: What I'm looking for is the positional equivalent of argumentCollection. If it wasn't for that, you'd think the same about passing a structure of arguments -- any object you pass will be treated as a single argument. But argumentCollection trumps that. I even tried a structure with keys 1, 2, 3, and passing that as argumentCollection (unnamed arguments appear inside the function as 1, 2, and 3 if you dump arguments), no joy. @Jason: Clearly, calling a method three times, each time with one argument, is very different than calling it once with all three. Say they're search fields, lastName, FirstName, ZIP; you want the search to run with all three of them in place, not separately for each one. (Not sure why you went with an iterator rather than just indexing over the array, but it doesn't matter, not what I need to do.) Thanks for the ideas though. This just may not be possible. Dav ~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337915 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm
Re: Positional argument collection
Missing the point. The method already exists and has other callers, who pass separate arguments by name or position. I'm not redesigning its API to take an array of arguments. I want to generically pass in a set of ordered arguments to it. Dave On Wed, Oct 6, 2010 at 1:57 PM, Michael Grant mgr...@modus.bz wrote: I gave you a perfectly viable, easy to implement solution. On Wed, Oct 6, 2010 at 1:55 PM, enigment enigm...@gmail.com wrote: Imagine an SES URL processor somewhat analogous to what Django provides, with a regex match that captures specific segments of the incoming URL and passes them to the requested method. Yes I know about ColdCourse, and the related ColdBox plugin etc, I was just thinking about alternate approaches. So yes, maybe it's unusual, but not irrational, or due to lack of structure in my code. Please, can we not debate my motivation any more? If there are any actual answers to the original question, I'd be interested in hearing them, but frankly I doubt it. I've been doing CF for quite a while, and didn't know of one, so I thought I'd ask around, but this keeps focusing on larger issues. That's a Good Thing in many cases, but actually not here. I'm asking if there's a language feature I'm not aware of to accomplish this, nothing more. Dave On Wed, Oct 6, 2010 at 1:34 PM, Michael Grant mgr...@modus.bz wrote: It's also pretty unusual to not have any idea how many arguments you are passing into a method. There are many more elegant approaches to your switch suggestion. The primary one being writing code that has structure and passes in the expected amount of arguments each time. Another one would be that since you know how many arguments you are expecting in the method perhaps write a function to loop over and pad your array with null values if they aren't defined. Then your call to the method can always pass in the expected amount of arguments. On Wed, Oct 6, 2010 at 1:13 PM, enigment enigm...@gmail.com wrote: It's unusual for a method to take an array of its arguments, rather than individual ones. Situation is something like a dispatcher; the methods already have defined arguments, say Widgets.search(widgetName, widgetCategory, widgetID). It'd be pretty weird for it to take an array containing those three arguments. The layer I'm talking about wants to call that, but only has an array of argument values, in order. Not to be cranky, but while there's room for debate on why I want to do this, this isn't that conversation. If there's no more elegant approach than the switch strategy I mentioned, I'll probably ditch this entire route. I first wanted to check if anyone could think of a way to accomplish this in the CFML language, out of curiosity and to maybe learn something that might be useful some day, as well to get it done -- there's lots of smart and experienced folks out there. I didn't mean to discuss whether it's worth doing. Thanks, Dave On Wed, Oct 6, 2010 at 12:42 PM, Michael Grant mgr...@modus.bz wrote: Dave, Why don't you just pass in the array? cfset positionalArgs = ['foo', 'bar', 42] / cfset myFunction(positionalArgs) / cffunction name=myFunction cfargument name=positionalArgs type=array cfloop from=1 to=#arraylen(positionalArgs)# index=x cfdump var=#x#: #positionalArgs[x]#br / /cfloop /cffunction On Wed, Oct 6, 2010 at 12:38 PM, enigment enigm...@gmail.com wrote: @Michael: What I'm looking for is the positional equivalent of argumentCollection. If it wasn't for that, you'd think the same about passing a structure of arguments -- any object you pass will be treated as a single argument. But argumentCollection trumps that. I even tried a structure with keys 1, 2, 3, and passing that as argumentCollection (unnamed arguments appear inside the function as 1, 2, and 3 if you dump arguments), no joy. @Jason: Clearly, calling a method three times, each time with one argument, is very different than calling it once with all three. Say they're search fields, lastName, FirstName, ZIP; you want the search to run with all three of them in place, not separately for each one. (Not sure why you went with an iterator rather than just indexing over the array, but it doesn't matter, not what I need to do.) Thanks for the ideas though. This just may not be possible. Dav ~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337916 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm
Re: Positional argument collection
Missing the point. The method already exists and has other callers, who pass separate arguments by name or position. I'm not redesigning its API to take an array of arguments. I want to generically pass in a set of ordered arguments to it. How about writing a new method that takes two arguments: the name of the method you want it to call and an array of arguments. This method could then build a method call to the original method, and write the values positionally by iterating through the array. Presumably, you'd plop this method in a utility CFC, rather than in the original CFCs. Or, you could add it to the superclass so that it's present through your class hierarchy. Dave Watts, CTO, Fig Leaf Software http://www.figleaf.com/ http://training.figleaf.com/ Fig Leaf Software is a Veteran-Owned Small Business (VOSB) on GSA Schedule, and provides the highest caliber vendor-authorized instruction at our training centers, online, or onsite. ~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337917 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm
Re: Positional argument collection
Re-read my last post. If you know that the method will accept x number of arguments. And your array may have anywhere from 1 to x possible values then write a function to pad your array with (x - arraylen) null values. Like this: cfset positionalArgs = ['foo', 'bar', 42] cfset positionalArgs = padMyArray(positionalArgs,10) / cfset myFunction(positionalArgs[1], positionalArgs[2], positionalArgs[3], positionalArgs[4], positionalArgs[5], positionalArgs[6], positionalArgs[7], positionalArgs[8], positionalArgs[9], positionalArgs[10] ) cffunction name=padMyArray cfargument name=arrIN type=array required=true cfargument name=arrLen type=numeric required=true cfloop from=#arraylen(arrIN)# to=#arrlen# index=x cfset ArrayAppend(arrIN,) /cfloop cfreturn arrIN / /cffunction cffunction name=myFunction cfargument name=arg1 required=false default=not defined cfargument name=arg2 required=false default=not defined cfargument name=arg3 required=false default=not defined cfargument name=arg4 required=false default=not defined cfargument name=arg5 required=false default=not defined cfargument name=arg6 required=false default=not defined cfargument name=arg7 required=false default=not defined cfargument name=arg8 required=false default=not defined cfargument name=arg9 required=false default=not defined cfargument name=arg10 required=false default=not defined cfdump var=arg1: #arg1# cfdump var=arg2: #arg2# cfdump var=arg3: #arg3# cfdump var=arg4: #arg4# cfdump var=arg5: #arg5# cfdump var=arg6: #arg6# cfdump var=arg7: #arg7# cfdump var=arg8: #arg8# cfdump var=arg9: #arg9# cfdump var=arg10: #arg10# /cffunction On Wed, Oct 6, 2010 at 2:16 PM, enigment enigm...@gmail.com wrote: Missing the point. The method already exists and has other callers, who pass separate arguments by name or position. I'm not redesigning its API to take an array of arguments. I want to generically pass in a set of ordered arguments to it. Dave On Wed, Oct 6, 2010 at 1:57 PM, Michael Grant mgr...@modus.bz wrote: I gave you a perfectly viable, easy to implement solution. On Wed, Oct 6, 2010 at 1:55 PM, enigment enigm...@gmail.com wrote: Imagine an SES URL processor somewhat analogous to what Django provides, with a regex match that captures specific segments of the incoming URL and passes them to the requested method. Yes I know about ColdCourse, and the related ColdBox plugin etc, I was just thinking about alternate approaches. So yes, maybe it's unusual, but not irrational, or due to lack of structure in my code. Please, can we not debate my motivation any more? If there are any actual answers to the original question, I'd be interested in hearing them, but frankly I doubt it. I've been doing CF for quite a while, and didn't know of one, so I thought I'd ask around, but this keeps focusing on larger issues. That's a Good Thing in many cases, but actually not here. I'm asking if there's a language feature I'm not aware of to accomplish this, nothing more. Dave On Wed, Oct 6, 2010 at 1:34 PM, Michael Grant mgr...@modus.bz wrote: It's also pretty unusual to not have any idea how many arguments you are passing into a method. There are many more elegant approaches to your switch suggestion. The primary one being writing code that has structure and passes in the expected amount of arguments each time. Another one would be that since you know how many arguments you are expecting in the method perhaps write a function to loop over and pad your array with null values if they aren't defined. Then your call to the method can always pass in the expected amount of arguments. On Wed, Oct 6, 2010 at 1:13 PM, enigment enigm...@gmail.com wrote: It's unusual for a method to take an array of its arguments, rather than individual ones. Situation is something like a dispatcher; the methods already have defined arguments, say Widgets.search(widgetName, widgetCategory, widgetID). It'd be pretty weird for it to take an array containing those three arguments. The layer I'm talking about wants to call that, but only has an array of argument values, in order. Not to be cranky, but while there's room for debate on why I want to do this, this isn't that conversation. If there's no more elegant approach than the switch strategy I mentioned, I'll probably ditch this entire route. I first wanted to check if anyone could think of a way to accomplish this in the CFML language, out of curiosity and to maybe learn something that might be useful some day, as well to get it done -- there's lots of smart and experienced folks out there. I didn't mean to discuss whether it's worth doing. Thanks, Dave On Wed, Oct 6, 2010 at 12:42 PM, Michael Grant mgr...@modus.bz wrote: Dave, Why don't you just pass in the array? cfset positionalArgs = ['foo', 'bar', 42] /
Re: Positional argument collection
Hmmm, not sure what you mean by build a method call to the original method, and write the values positionally by iterating through the array. Do you mean write it out to disk or VFS? I'd thought of that, but wasn't super fond of the idea, since unless I'm missing something, you'd have to do that for every supported number of arguments for every publicly accessible method in the app. Or maybe I'm just not on your wavelength here. Dave On Wed, Oct 6, 2010 at 2:24 PM, Dave Watts dwa...@figleaf.com wrote: Missing the point. The method already exists and has other callers, who pass separate arguments by name or position. I'm not redesigning its API to take an array of arguments. I want to generically pass in a set of ordered arguments to it. How about writing a new method that takes two arguments: the name of the method you want it to call and an array of arguments. This method could then build a method call to the original method, and write the values positionally by iterating through the array. Presumably, you'd plop this method in a utility CFC, rather than in the original CFCs. Or, you could add it to the superclass so that it's present through your class hierarchy. Dave Watts, CTO, Fig Leaf Software http://www.figleaf.com/ http://training.figleaf.com/ Fig Leaf Software is a Veteran-Owned Small Business (VOSB) on GSA Schedule, and provides the highest caliber vendor-authorized instruction at our training centers, online, or onsite. ~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337919 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm
Re: Positional argument collection
You're right, I did misread your last post, sorry. But it's still not super practical as a generic SES-URL-to-method-call dispatcher, unless I'm still not getting what you mean. You'd need to inspect each method before you called it to find out how many args it takes, pad the array out that far, and then you'd still need a switch statement to call the method with that specific number of arguments. Keying the switch statement of the actual number of captured URL segments seems simpler and less overhead. In other words, whether the variable number of items in the array is the number of arguments for each individual method, or the number of URL segments actually captured, the problem of how to generically call a method with a variable number of arguments remains. Unless you want to find out the maximum number of arguments passed by *any* method, and always use that, but by that time I'd think this was too clunky to consider. Is there some other way you're thinking of to make the actual call? Dave On Wed, Oct 6, 2010 at 2:33 PM, Michael Grant mgr...@modus.bz wrote: Re-read my last post. If you know that the method will accept x number of arguments. And your array may have anywhere from 1 to x possible values then write a function to pad your array with (x - arraylen) null values. Like this: cfset positionalArgs = ['foo', 'bar', 42] cfset positionalArgs = padMyArray(positionalArgs,10) / cfset myFunction(positionalArgs[1], positionalArgs[2], positionalArgs[3], positionalArgs[4], positionalArgs[5], positionalArgs[6], positionalArgs[7], positionalArgs[8], positionalArgs[9], positionalArgs[10] ) cffunction name=padMyArray cfargument name=arrIN type=array required=true cfargument name=arrLen type=numeric required=true cfloop from=#arraylen(arrIN)# to=#arrlen# index=x cfset ArrayAppend(arrIN,) /cfloop cfreturn arrIN / /cffunction cffunction name=myFunction cfargument name=arg1 required=false default=not defined cfargument name=arg2 required=false default=not defined cfargument name=arg3 required=false default=not defined cfargument name=arg4 required=false default=not defined cfargument name=arg5 required=false default=not defined cfargument name=arg6 required=false default=not defined cfargument name=arg7 required=false default=not defined cfargument name=arg8 required=false default=not defined cfargument name=arg9 required=false default=not defined cfargument name=arg10 required=false default=not defined cfdump var=arg1: #arg1# cfdump var=arg2: #arg2# cfdump var=arg3: #arg3# cfdump var=arg4: #arg4# cfdump var=arg5: #arg5# cfdump var=arg6: #arg6# cfdump var=arg7: #arg7# cfdump var=arg8: #arg8# cfdump var=arg9: #arg9# cfdump var=arg10: #arg10# ~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337920 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm
Re: Positional argument collection
Hmmm, not sure what you mean by build a method call to the original method, and write the values positionally by iterating through the array. Do you mean write it out to disk or VFS? I'd thought of that, but wasn't super fond of the idea, since unless I'm missing something, you'd have to do that for every supported number of arguments for every publicly accessible method in the app. No, I didn't mean on disk or VFS, I meant just writing a string of code and executing it using Evaluate. There might be a more elegant approach, but that should work. I haven't really read the rest of the thread that closely, so I'm not sure if someone has basically proposed the same thing or not. Dave Watts, CTO, Fig Leaf Software http://www.figleaf.com/ http://training.figleaf.com/ Fig Leaf Software is a Veteran-Owned Small Business (VOSB) on GSA Schedule, and provides the highest caliber vendor-authorized instruction at our training centers, online, or onsite. ~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337921 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm
Re: Positional argument collection
No, actually not, unless I missed it. Evaluate is against my religion, but I might make an exception if there isn't any other way and I care enough. It's an odd language feature to work around, argumentCollection (args by name) exists, but there's no positional equivalent. Thanks, Dave On Wed, Oct 6, 2010 at 3:28 PM, Dave Watts dwa...@figleaf.com wrote: Hmmm, not sure what you mean by build a method call to the original method, and write the values positionally by iterating through the array. Do you mean write it out to disk or VFS? I'd thought of that, but wasn't super fond of the idea, since unless I'm missing something, you'd have to do that for every supported number of arguments for every publicly accessible method in the app. No, I didn't mean on disk or VFS, I meant just writing a string of code and executing it using Evaluate. There might be a more elegant approach, but that should work. I haven't really read the rest of the thread that closely, so I'm not sure if someone has basically proposed the same thing or not. Dave Watts, CTO, Fig Leaf Software http://www.figleaf.com/ http://training.figleaf.com/ Fig Leaf Software is a Veteran-Owned Small Business (VOSB) on GSA Schedule, and provides the highest caliber vendor-authorized instruction at our training centers, online, or onsite. ~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337922 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm
Re: Positional argument collection
No, actually not, unless I missed it. Evaluate is against my religion, but I might make an exception if there isn't any other way and I care enough. It's an odd language feature to work around, argumentCollection (args by name) exists, but there's no positional equivalent. It's not that odd, given that (a) you're the first person I know who's wanted it, and (b) structures aren't naturally sorted, so without names who knows where the arguments would be positioned! Dave Watts, CTO, Fig Leaf Software http://www.figleaf.com/ http://training.figleaf.com/ Fig Leaf Software is a Veteran-Owned Small Business (VOSB) on GSA Schedule, and provides the highest caliber vendor-authorized instruction at our training centers, online, or onsite. ~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337924 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm