When is a String not an NSString?
With respect to the following code 1 require 'test/unit' 2 3 class String 4 def my_method 5 "My Method " + self 6 end 7 end 8 9 class Test_Tumblr < Test::Unit::TestCase 10 11 def test_strings 12 cocoa_string = NSString::stringWithString("blah") 13 ruby_string = "Ruby String" 14 15 assert_equal String, cocoa_string.class 16 assert_equal String, ruby_string.class 17 assert_equal cocoa_string.class, ruby_string.class 18 19 assert ruby_string.respond_to?(:my_method), "ruby_string.respond_to?" 20 assert cocoa_string.respond_to?(:my_method), "cocoa_string.respond_to?" 21 end 22 23 end What is the expected result of line 20? On the one hand cocoa_string is an NSString so the monkey patch shouldn't have any effect, but on the other cocoa_string is claiming to be a ruby String. Henry
This sounds like a bug to me. Have you filed a ticket? http://trac.macosforge.org/projects/ruby/newticket -- Michael Jackson http://mjijackson.com @mjijackson On Mon, Jul 12, 2010 at 6:02 PM, Henry Maddocks <henry.maddocks@gmail.com> wrote:
With respect to the following code
1 require 'test/unit' 2 3 class String 4 def my_method 5 "My Method " + self 6 end 7 end 8 9 class Test_Tumblr < Test::Unit::TestCase 10 11 def test_strings 12 cocoa_string = NSString::stringWithString("blah") 13 ruby_string = "Ruby String" 14 15 assert_equal String, cocoa_string.class 16 assert_equal String, ruby_string.class 17 assert_equal cocoa_string.class, ruby_string.class 18 19 assert ruby_string.respond_to?(:my_method), "ruby_string.respond_to?" 20 assert cocoa_string.respond_to?(:my_method), "cocoa_string.respond_to?" 21 end 22 23 end
What is the expected result of line 20?
On the one hand cocoa_string is an NSString so the monkey patch shouldn't have any effect, but on the other cocoa_string is claiming to be a ruby String.
Henry _______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
Hi, I believe this has been discussed on trac already, although I can't seem to find the ticket. In short, this is expected behavior. A method added to the String class will only be available to strings created from Ruby. If you want a method to be available to all strings, add it to the NSString class. I do agree that this can be confusing behavior and maybe we can try to reduce the confusion somehow. This design was implemented in 0.6 and is the result of several debates. I personally didn't expect people would notice this :) Laurent On Jul 13, 2010, at 10:59 AM, Michael Jackson wrote:
This sounds like a bug to me. Have you filed a ticket?
http://trac.macosforge.org/projects/ruby/newticket
-- Michael Jackson http://mjijackson.com @mjijackson
On Mon, Jul 12, 2010 at 6:02 PM, Henry Maddocks <henry.maddocks@gmail.com> wrote:
With respect to the following code
1 require 'test/unit' 2 3 class String 4 def my_method 5 "My Method " + self 6 end 7 end 8 9 class Test_Tumblr < Test::Unit::TestCase 10 11 def test_strings 12 cocoa_string = NSString::stringWithString("blah") 13 ruby_string = "Ruby String" 14 15 assert_equal String, cocoa_string.class 16 assert_equal String, ruby_string.class 17 assert_equal cocoa_string.class, ruby_string.class 18 19 assert ruby_string.respond_to?(:my_method), "ruby_string.respond_to?" 20 assert cocoa_string.respond_to?(:my_method), "cocoa_string.respond_to?" 21 end 22 23 end
What is the expected result of line 20?
On the one hand cocoa_string is an NSString so the monkey patch shouldn't have any effect, but on the other cocoa_string is claiming to be a ruby String.
Henry _______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
In fact, there's already a track ticket for that (and I think that's the discussion Laurent was looking for): http://www.macruby.org/trac/ticket/726 :-) -- Thibault Martin-Lagardette On Jul 13, 2010, at 13:02, Laurent Sansonetti wrote:
Hi,
I believe this has been discussed on trac already, although I can't seem to find the ticket.
In short, this is expected behavior. A method added to the String class will only be available to strings created from Ruby. If you want a method to be available to all strings, add it to the NSString class. I do agree that this can be confusing behavior and maybe we can try to reduce the confusion somehow. This design was implemented in 0.6 and is the result of several debates. I personally didn't expect people would notice this :)
Laurent
On Jul 13, 2010, at 10:59 AM, Michael Jackson wrote:
This sounds like a bug to me. Have you filed a ticket?
http://trac.macosforge.org/projects/ruby/newticket
-- Michael Jackson http://mjijackson.com @mjijackson
On Mon, Jul 12, 2010 at 6:02 PM, Henry Maddocks <henry.maddocks@gmail.com> wrote:
With respect to the following code
1 require 'test/unit' 2 3 class String 4 def my_method 5 "My Method " + self 6 end 7 end 8 9 class Test_Tumblr < Test::Unit::TestCase 10 11 def test_strings 12 cocoa_string = NSString::stringWithString("blah") 13 ruby_string = "Ruby String" 14 15 assert_equal String, cocoa_string.class 16 assert_equal String, ruby_string.class 17 assert_equal cocoa_string.class, ruby_string.class 18 19 assert ruby_string.respond_to?(:my_method), "ruby_string.respond_to?" 20 assert cocoa_string.respond_to?(:my_method), "cocoa_string.respond_to?" 21 end 22 23 end
What is the expected result of line 20?
On the one hand cocoa_string is an NSString so the monkey patch shouldn't have any effect, but on the other cocoa_string is claiming to be a ruby String.
Henry _______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
On 14/07/2010, at 9:10 AM, Thibault Martin-Lagardette wrote:
In fact, there's already a track ticket for that (and I think that's the discussion Laurent was looking for):
Should I add my two cents here or on the trac ticket? Henry
On Jul 13, 2010, at 3:32 PM, Henry Maddocks wrote:
On 14/07/2010, at 9:10 AM, Thibault Martin-Lagardette wrote:
In fact, there's already a track ticket for that (and I think that's the discussion Laurent was looking for):
Should I add my two cents here or on the trac ticket?
In the trac ticket please :) Thanks Laurent
participants (4)
-
Henry Maddocks
-
Laurent Sansonetti
-
Michael Jackson
-
Thibault Martin-Lagardette