[Rubycocoa-devel 923] Re: class_eval on OSX::NSControl that allows for syntactic sugar on getters/setters.

Back to archive index

Eloy Duran eloy.****@gmail*****
Fri Jun 1 00:35:34 JST 2007


Probably yeah.

Do you want those by default? Or should these be added so we have both:

def setFoo(arg)
 ...
end

&

def foo=(arg)
 ...
end

Eloy

On 5/31/07, Laurent Sansonetti <lsans****@apple*****> wrote:
> Was just thinking about it when coming back to home. We should modify
> the documentation generator to describe the new accessors.
>
> Eloy, would that be possible?
>
> Laurent
>
> On May 31, 2007, at 3:03 PM, Laurent Sansonetti wrote:
>
> > This was committed last night, as r1796 (with a bunch of bugfixes
> > too).
> >
> > Laurent
> >
> > On May 31, 2007, at 10:19 AM, Eloy Duran wrote:
> >
> >> Very nice Laurent!
> >>
> >> On 5/30/07, Laurent Sansonetti <lsans****@apple*****> wrote:
> >>> Hi Michael and all,
> >>>
> >>> I think that we should add a general #foo= -> #setFoo shortcut.
> >>>
> >>> Here is a patch that implements this feature. What do you think
> >>> guys?
> >>>
> >>> With the patch you can do:
> >>>
> >>>  myControl.stringValue = 'foo'
> >>>
> >>> but also:
> >>>
> >>>  myTableView.dataSource = self
> >>>
> >>> etc...
> >>>
> >>> Laurent
> >>>
> >>> Index: framework/src/ruby/osx/objc/oc_wrapper.rb
> >>> ===================================================================
> >>> --- framework/src/ruby/osx/objc/oc_wrapper.rb   (revision 1789)
> >>> +++ framework/src/ruby/osx/objc/oc_wrapper.rb   (working copy)
> >>> @@ -77,8 +77,18 @@
> >>>
> >>>       # remove `?' suffix (to keep compatibility)
> >>>       # explicit predicate if `?' suffix with OSX.relaxed_syntax
> >>> -      as_predicate = (m_name.sub!(/\?$/, '') &&
> >>> OSX.relaxed_syntax) ?
> >>> true : false
> >>> +      as_predicate = false
> >>> +      if m_name[-1] == ??
> >>> +        m_name.chop!
> >>> +        as_predicate = OSX.relaxed_syntax
> >>> +      end
> >>>
> >>> +      # convert foo= to setFoo
> >>> +      if m_name[-1] == ?=
> >>> +        m_name.chop!
> >>> +        m_name = 'set' + m_name[0].chr.upcase + m_name[1..-1]
> >>> +      end
> >>> +
> >>>       # check call style
> >>>       #   as Objective-C: [self aaa: a0 Bbb: a1 Ccc: a2]
> >>>       #   as Ruby:   self.aaa_Bbb_Ccc_ (a0, a1, a2)
> >>>
> >>> On May 30, 2007, at 10:08 PM, Michael Basnight wrote:
> >>>
> >>>> Guys,
> >>>>
> >>>> What do yall think of this? It gives OSX::NSControl prettier
> >>>> getters
> >>>> and setters (I only tried OSX::NSTextField). Note this is not just
> >>>> for the string methods, but for %w(double float int object
> >>>> string). I
> >>>> use string as an example.
> >>>>
> >>>> old way (in irb) returns "foo"
> >>>>
> >>>> foo = OSX::NSTextField.alloc.init
> >>>>
> >>>> foo.setStringValue("foo")
> >>>> foo.stringValue.to_s
> >>>>
> >>>> new way (in irb) does the same.
> >>>>
> >>>> foo = OSX::NSTextField.alloc.init
> >>>>
> >>>> foo.string = "foo"
> >>>> foo.string.to_s
> >>>>
> >>>> You can also do a foo.string!, which returns the string and sets it
> >>>> to "" afterwards. It does not work for the object/int/float/double
> >>>> (e.g., invalid value for Integer: ""), but maybe someone can fix
> >>>> that
> >>>> up.
> >>>>
> >>>> Here is the pastie (http://pastie.caboo.se/66197). What do ya'll
> >>>> think? Wouldn't that be cool to be able to do that w/o hacking it
> >>>> up
> >>>> in rb_main ;)
> >>>>
> >>>> Michael Basnight
> >>>> iHate, a RubyCocoa Utu chat client http://ihate.rubyforge.org
> >>>>
> >>>> _______________________________________________
> >>>> Rubycocoa-devel mailing list
> >>>> Rubyc****@lists*****
> >>>> http://lists.sourceforge.jp/mailman/listinfo/rubycocoa-devel
> >>>
> >>> _______________________________________________
> >>> Rubycocoa-devel mailing list
> >>> Rubyc****@lists*****
> >>> http://lists.sourceforge.jp/mailman/listinfo/rubycocoa-devel
> >>>
> >>
> >> _______________________________________________
> >> Rubycocoa-devel mailing list
> >> Rubyc****@lists*****
> >> http://lists.sourceforge.jp/mailman/listinfo/rubycocoa-devel
> >
> > _______________________________________________
> > Rubycocoa-devel mailing list
> > Rubyc****@lists*****
> > http://lists.sourceforge.jp/mailman/listinfo/rubycocoa-devel
>
> _______________________________________________
> Rubycocoa-devel mailing list
> Rubyc****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/rubycocoa-devel
>




More information about the Rubycocoa-devel mailing list
Back to archive index