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:26:18 GMT
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