[macruby-changes] [789] MacRuby/trunk

source_changes at macosforge.org source_changes at macosforge.org
Tue Jan 13 07:54:09 PST 2009


Revision: 789
          http://trac.macosforge.org/projects/ruby/changeset/789
Author:   eloy.de.enige at gmail.com
Date:     2009-01-13 07:54:09 -0800 (Tue, 13 Jan 2009)
Log Message:
-----------
Added workarounds for NSCFNumber to Float conversion on the NSRect setters. This is because Numeric is not yet re-implemented on top of NSCFNumber.

Modified Paths:
--------------
    MacRuby/trunk/lib/objc_ext/ns_rect.rb
    MacRuby/trunk/test-macruby/test_objc_ext.rb

Modified: MacRuby/trunk/lib/objc_ext/ns_rect.rb
===================================================================
--- MacRuby/trunk/lib/objc_ext/ns_rect.rb	2009-01-13 15:34:04 UTC (rev 788)
+++ MacRuby/trunk/lib/objc_ext/ns_rect.rb	2009-01-13 15:54:09 UTC (rev 789)
@@ -8,17 +8,17 @@
       
       # Assigns the `x' coordinate on the rects origin instance.
       def x=(x)
-        origin.x = x
+        origin.x = coerce_float(x)
       end
       
       # Returns the `y' coordinate of the rects origin instance.
-      def x
-        origin.x
+      def y
+        origin.y
       end
       
       # Assigns the `y' coordinate on the rects origin instance.
-      def x=(x)
-        origin.x = x
+      def y=(y)
+        origin.y = coerce_float(y)
       end
       
       # Returns the `height' of the rects size instance.
@@ -28,7 +28,7 @@
       
       # Sets the `height' on the rects size instance.
       def height=(height)
-        size.height = height
+        size.height = coerce_float(height)
       end
       
       # Returns the `width' of the rects size instance.
@@ -38,8 +38,16 @@
       
       # Sets the `width' on the rects size instance.
       def width=(width)
-        size.width = width
+        size.width = coerce_float(width)
       end
+      
+      private
+      
+      # Needed because atm NSCFNumber to Float conversion does not happen yet.
+      # In other words, Numeric should be build upon NSCFNumber.
+      def coerce_float(value)
+        (value.is_a?(NSCFNumber) ? value.floatValue : value)
+      end
     end
   end
 end

Modified: MacRuby/trunk/test-macruby/test_objc_ext.rb
===================================================================
--- MacRuby/trunk/test-macruby/test_objc_ext.rb	2009-01-13 15:34:04 UTC (rev 788)
+++ MacRuby/trunk/test-macruby/test_objc_ext.rb	2009-01-13 15:54:09 UTC (rev 789)
@@ -1,6 +1,6 @@
 #!/usr/bin/env macruby
 
-$: << File.expand_path('../../lib', __FILE__)
+$:.unshift(File.expand_path('../../lib', __FILE__))
 framework 'Cocoa'
 
 require 'test/unit'
@@ -54,6 +54,9 @@
   it "should assign the height to its size instance with #height=" do
     @rect.height = 300
     assert_equal 300, @rect.height
+    
+    @rect.height = NSNumber.numberWithInt(400)
+    assert_equal 400, @rect.height
   end
   
   it "should return its size instance's width with #width" do
@@ -63,6 +66,9 @@
   it "should assign the width to its size instance with #width=" do
     @rect.width = 300
     assert_equal 300, @rect.width
+    
+    @rect.width = NSNumber.numberWithInt(400)
+    assert_equal 400, @rect.width
   end
   
   it "should return its origin instance's x coord with #x" do
@@ -72,6 +78,9 @@
   it "should assign the x coord to its origin instance with #x=" do
     @rect.x = 200
     assert_equal 200, @rect.x
+    
+    @rect.x = NSNumber.numberWithInt(300)
+    assert_equal 300, @rect.x
   end
   
   it "should return its origin instance's y coord with #y" do
@@ -81,5 +90,8 @@
   it "should assign the y coord to its origin instance with #y=" do
     @rect.y = 200
     assert_equal 200, @rect.y
+    
+    @rect.y = NSNumber.numberWithInt(300)
+    assert_equal 300, @rect.y
   end
 end
\ No newline at end of file
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090113/c66d3da3/attachment-0001.html>


More information about the macruby-changes mailing list