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 <jerrywil...@gmail.com> 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 > 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] > > It works!!! > > Something about the Eval works just a little bit differently than > GroovyShell i guess. Perhaps Dierk can explain. > > Last question, how expensive is this invocation of groovyshell and parse > and all that (resources wise)? So-so? > > > Gerald R. Wiltse > jerrywil...@gmail.com > > > On Wed, Apr 20, 2016 at 1:48 AM, Guillaume Laforge <glafo...@gmail.com> > wrote: > >> 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 <jerrywil...@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 >>> jerrywil...@gmail.com >>> >>> >>> On Wed, Apr 20, 2016 at 1:15 AM, Guillaume Laforge <glafo...@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 <jerrywil...@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 >>>>> jerrywil...@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> >> > >