groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gerald Wiltse <jerrywil...@gmail.com>
Subject Re: Methods for Creating Ranges
Date Wed, 20 Apr 2016 05:28:36 GMT
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")
            }
        }



Gerald R. Wiltse
jerrywiltse@gmail.com


On Wed, Apr 20, 2016 at 1:26 AM, Gerald Wiltse <jerrywiltse@gmail.com>
wrote:

> 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 could do:
>
> String rangeString = passedInVar
> (String min, String max) = rangeString.tokenize("..")
> Range range = min..max
>
> But i was hoping for a universal "caster" loop which can detect and cast
> the common types from strings:
> Integers, lists, ranges, maps, booleans..
>
> 12345
> ["this", "is", "Sample", "List"]
> 14502..14520
> ["key":"value","for":"maps"]
> true
>
> I think eval works for all but ranges.
>
>
>
>
>
>
> Gerald R. Wiltse
> jerrywiltse@gmail.com
>
>
> On Wed, Apr 20, 2016 at 1:15 AM, Guillaume Laforge <glaforge@gmail.com>
> wrote:
>
>> 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 <jerrywiltse@gmail.com> a
>> écrit :
>>
>>> 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 a form of a
>>> list, but I see no helper methods for dynamically creating ranges given a
>>> min and max value.
>>>
>>> I even tried to get really fancy, but this evaluates to a string.
>>>
>>> def v = "10..15"
>>> assert Eval.x(v, "return x")​.getClass()​.name ==
>>> "​​​​​​​​​​​java.lang.String"​
>>>
>>> My use case is this.  I populate a bunch of form fields with variable
>>> definitions... but they all get passed to my code as strings. But I want to
>>> pass port ranges and lists and maps. So, the Eval() method is exactly what
>>> I needed.. it just isn't working for ranges.
>>>
>>> Regards,
>>> Jerry
>>>
>>>
>>> Gerald R. Wiltse
>>> jerrywiltse@gmail.com
>>>
>>>
>>
>> --
>> Guillaume Laforge
>> Apache Groovy committer & PMC Vice-President
>> Product Ninja & Advocate at Restlet <http://restlet.com>
>>
>> Blog: http://glaforge.appspot.com/
>> Social: @glaforge <http://twitter.com/glaforge> / Google+
>> <https://plus.google.com/u/0/114130972232398734985/posts>
>>
>>
>

Mime
View raw message