[ragel-users] Re: rlgen-ruby / ruby 1.9 incompatibilities, possiblefixes, and offer to patch

Bruce Williams br... at codefluency.com
Thu Jan 3 04:50:19 UTC 2008


Adrian,

In 1.9, use String#ord:

------------------------------------------------------------- String#ord
     str.ord   => integer
------------------------------------------------------------------------
     Return the +Integer+ ordinal of a one-character string.

        "a".ord         #=> 97

So, "foo"[1].ord in 1.9 should be equivalent to "foo"[1] in 1.8.

Cheers,
Bruce

---
Bruce Williams
http://codefluency.com

On 1/2/08, Adrian Thurston <thurs... at cs.queensu.ca> wrote:
> I'll look this up tomorrow. Right now I'm in a train station. In the meantime are there any ruby experts out there that know the proper way to index arrays and strings and pull out numbers?
>
> Adrian
> -----Original Message-----
> From: dcgrigsby <dan-goo... at unpossible.com>
>
> Date: Wed, 2 Jan 2008 11:56:55
> To:ragel-users <ragel-users at googlegroups.com>
> Subject: [ragel-users] rlgen-ruby / ruby 1.9 incompatibilities, possible
>  fixes, and offer to  patch
>
>
>
> Hello,
>
> The code generated by rlgen-ruby is incompatible with Ruby 1.9.
>
> Using the simple DevChix Hello World example (http://www.devchix.com/
> 2007/12/13/a-hello-world-for-ruby-on-ragel/)., the generated "write
> exec" ruby contains a handful of errors.
>
> 1) the "when" clause in the generated case statements uses a
> deprecated form.  It is in the form "when <value>:" and should be
> "when <value> then" instead.
>
> 2) under 1.9, a string element reference (i.e., [] operator) returns a
> string, not a fixnum as under 1.8.  So the comparisons like this...
>
>   if data[p] < _hello_trans_keys[_mid]
>
> ...result in "`<': comparison of String with 104 failed
> (ArgumentError)" under 1.9.
>
>
>
> I'd be happy to work up a patch, hopefully one that works under both
> 1.8 and 1.9, but I need some guidance.
>
> The former should be easy.  I found all the instances that use the
> colon in when and changed them successfully.
>
> The later is where I'm uncertain.  Appending ".to_s" to both sides of
> the comparison (needs to be both sides to retain 1.8 compatibility)
> everywhere seems wrong.  At this point I'm doing little more than
> grepping the source; I don't really comprehend what's going on, so a
> point in the right direction would be welcome.
>
> Thanks,
>
> Dan
>
>
>
> >
>



More information about the ragel-users mailing list