[MacRuby-devel] Translating Obj-C to MacRuby

B. Ohr jazzbox at 7zz.de
Wed Oct 14 02:34:59 PDT 2009


Hi,

Am 14.10.2009 um 11:04 schrieb Laurent Sansonetti:

> Hi,
>
> On Oct 14, 2009, at 1:03 AM, B. Ohr wrote:
>
>> Hi all!
>>
>> Using Cocoa in MacRuby is sometimes a hard job, because all  
>> documentation, examples and sample code is Obj-C. For example, I  
>> found this piece of code '[NSNumber numberWithBool:NO]' and asked  
>> myself how to write that in Macruby.
>
> You can simply pass true or false and MacRuby will do the conversion  
> for you.

Oh yes, in my example project , I automatically used true and it  
worked. But then I began asking myself, how can I be shure that this  
is the correct way and what would an absolute beginner do and then i  
opened macirb...  ;-)

>
>> I opened macirb and typed:
>>
>> > NSNumber.numberWithBool 0
>> => false
>>
>> First I had to laugh and then I thought: Hey implementors of  
>> macruby, you really did a great job!
>
> And NSNumbers are converted to Ruby types as you just experienced :)

In the docs

+ (NSNumber *)numberWithBool:(BOOL)value

gives a NSNumber and not a TrueClass or FalseClass as in Macruby. I  
only wanted to say how impressed I am!


>
>> What do you think about a table on http://www.macruby.org/ which  
>> lists all such short (and astonishing) examples. Or even better,  
>> why not create a command in the services menu which translates a  
>> Obj-C sequence (by regexp).
>
> I think a short tutorial/page on the website would be great, indeed.  
> I don't believe it is easily possible to write an Objective-C ->  
> MacRuby convertor that works most/all the time (because of the C  
> nature of ObjC).
>

Such a cheat sheet can easily show the beauty of MacRuby and the  
"noisiness" of Obj-C! ;-)

I agree that a real translator is impossible. What I want is a simple  
text processing which removes all the [foo: bar baz] and replaces it  
with foo.bar(baz).


>> BTW, the second example I tried is:
>>
>> > NSDictionary.dictionaryWithObjectsAndKeys "a", "b", nil
>>
>> but instead of {"b"=>"a"} I got a seg fault! (ticket is filed)
>
> I replied to the ticket, it seems you forgot to do `framework  
> 'Foundation'' first.
>

Oh, my fault! But wouldn't it be better NOT to respond with a segment  
fault (this irritated me) and instead throw an normal ruby exception?  
(But perhaps that is impossible.)

Bernd







More information about the MacRuby-devel mailing list