groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Guillaume Laforge <glafo...@gmail.com>
Subject Re: Methods for Creating Ranges
Date Wed, 20 Apr 2016 05:48:20 GMT
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 <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>
>>
>>
>


-- 
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