Re: Methods for Creating Ranges

2016-04-20 Thread Felix Dorner
On 20-Apr-16 15:35, Gerald Wiltse wrote: I re-arranged it as follows. Does this seem preferable from a performance perspective?.There will be about an 8:1 ratio... (8 matches of this[tmpKey] = v to every 1 exception which hits the catch which needs to be parsed. try {

Re: Methods for Creating Ranges

2016-04-20 Thread Gerald Wiltse
Indeed it is powerful. This is for an integration for monitoring and management platform designed expressly for this purpose. You can already enter that code into a form field which lets you enter any arbitrary script. THis is just for a form field which is for properties. Gerald R. Wiltse jerryw

Re: Methods for Creating Ranges

2016-04-20 Thread Gerald Wiltse
I re-arranged it as follows. Does this seem preferable from a performance perspective?.There will be about an 8:1 ratio... (8 matches of this[tmpKey] = v to every 1 exception which hits the catch which needs to be parsed. try { this[tmpKey] = v

Re: Methods for Creating Ranges

2016-04-20 Thread Gerald Wiltse
The code will be executed about once every 10 seconds at a maximum, so the load is not extremely high. Gerald R. Wiltse jerrywil...@gmail.com On Wed, Apr 20, 2016 at 3:32 AM, Guillaume Laforge wrote: > Eval.x(v) should just work as well. > > Regarding resources / performance, it means spinning

Re: Methods for Creating Ranges

2016-04-20 Thread Alessio Stalla
If those strings come from the outside, then using eval on them is a no-no. Consider what happens if your input string is "${System.exit(1)}" or "${Shell.run('rm -rf /')}". Only use eval on sanitized input and only if there is no simpler way. On 20 April 2016 at 09:32, Guillaume Laforge wrote: >

Re: Methods for Creating Ranges

2016-04-20 Thread Guillaume Laforge
Eval.x(v) should just work as well. Regarding resources / performance, it means spinning the parser and compiler, so it's not for free. Doing your own string parsing logic might be more efficient. Depends on how frequently you have to do that. Le 20 avr. 2016 07:57, "Gerald Wiltse" a écrit : > W

Re: Methods for Creating Ranges

2016-04-19 Thread Gerald Wiltse
Scratch the part about the side effect... i forgot to remove that line after adding the exception handling. Gerald R. Wiltse jerrywil...@gmail.com On Wed, Apr 20, 2016 at 2:31 AM, Gerald Wiltse wrote: > For posterity, here's the working form of very short loop for accepting a > bunch of values

Re: Methods for Creating Ranges

2016-04-19 Thread Gerald Wiltse
For posterity, here's the working form of very short loop for accepting a bunch of values in a map which are all in string form. The goal is to try to parsing them to their groovy types, and then assign them to the variables on the current object if those variables exist. This loop will be in the

Re: Methods for Creating Ranges

2016-04-19 Thread Gerald Wiltse
Also, thank you so very much for the response! Gerald R. Wiltse jerrywil...@gmail.com On Wed, Apr 20, 2016 at 1:57 AM, Gerald Wiltse wrote: > Wow, i just wrote that exact code basically... and started responding to > your email, but there were various drawbacks to this approach as I don't > wa

Re: Methods for Creating Ranges

2016-04-19 Thread Gerald Wiltse
Wow, i just wrote that exact code basically... and started responding to your email, but there were various drawbacks to this approach as I don't want to have to define handling of every property by name... Then... it hit me... def v = '1..10' assert new GroovyShell().parse(v).run() == [1,2,3,4,5

Re: Methods for Creating Ranges

2016-04-19 Thread Guillaume Laforge
If you know it's a range when parsing that string, you can do this, with the toInteger() method: def rangeString = "123..455" def (String min, String max) = rangeString.tokenize("..") def range = min.toInteger()..max.toInteger() On Wed, Apr 20, 2016 at 7:26 AM, Gerald Wiltse wrote: > I

Re: Methods for Creating Ranges

2016-04-19 Thread Gerald Wiltse
Here is my current loop btw, it just bombs on the range, says its a string. taskProps.each { k, v -> String tmpKey = k.replaceAll('system.', '').toLowerCase().replaceAll('\\.','') if (this.hasProperty(tmpKey)) { this."$tmpKey" = Eval.x(v, "return x"

Re: Methods for Creating Ranges

2016-04-19 Thread Gerald Wiltse
I don't see how that works in my case, maybe i'm missing something. I will clarify: I define a variable in web to represent the range: 14502..14520 The web converts this to a string, and passes it into my code. My code then has to receive this string, and then construct a list from it. I cou

Re: Methods for Creating Ranges

2016-04-19 Thread Guillaume Laforge
Hi, You can just replace the bounds with variables. def a = 1 def b = 10 def r = a..b Isn't that what you're looking for? Guillaume Le mercredi 20 avril 2016, Gerald Wiltse a écrit : > I can find no examples of different ways to create a range. There's a > plethora of examples on what you

Methods for Creating Ranges

2016-04-19 Thread Gerald Wiltse
I can find no examples of different ways to create a range. There's a plethora of examples on what you can do when you start by creating a range like so: "1..10" But, how does one create a range when the min and max values are stored in variables? There's no range constructor. I see that it's