[macruby-changes] [3967] MacRuby/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Tue Apr 27 20:01:15 PDT 2010
Revision: 3967
http://trac.macosforge.org/projects/ruby/changeset/3967
Author: martinlagardette at apple.com
Date: 2010-04-27 20:01:10 -0700 (Tue, 27 Apr 2010)
Log Message:
-----------
Make NSString, NSArray and NSDictionary yamlable
Fixes the evil #666
Modified Paths:
--------------
MacRuby/trunk/lib/yaml/rubytypes.rb
MacRuby/trunk/spec/macruby/core/array_spec.rb
MacRuby/trunk/spec/macruby/core/hash_spec.rb
MacRuby/trunk/spec/macruby/core/string_spec.rb
Modified: MacRuby/trunk/lib/yaml/rubytypes.rb
===================================================================
--- MacRuby/trunk/lib/yaml/rubytypes.rb 2010-04-27 05:54:42 UTC (rev 3966)
+++ MacRuby/trunk/lib/yaml/rubytypes.rb 2010-04-28 03:01:10 UTC (rev 3967)
@@ -82,7 +82,7 @@
def taguri; "!ruby/struct:#{self.class.to_s.sub(/^Struct::/, '')}"; end
end
-class String
+class NSString
yaml_as "tag:yaml.org,2002:str"
def to_yaml(output = nil)
@@ -108,7 +108,7 @@
def taguri; "!ruby/exception:#{self.class}"; end
end
-class Array
+class NSArray
yaml_as "tag:yaml.org,2002:seq"
def to_yaml(output = nil)
@@ -120,7 +120,7 @@
end
end
-class Hash
+class NSDictionary
yaml_as "tag:yaml.org,2002:map"
def to_yaml(output = nil)
Modified: MacRuby/trunk/spec/macruby/core/array_spec.rb
===================================================================
--- MacRuby/trunk/spec/macruby/core/array_spec.rb 2010-04-27 05:54:42 UTC (rev 3966)
+++ MacRuby/trunk/spec/macruby/core/array_spec.rb 2010-04-28 03:01:10 UTC (rev 3967)
@@ -61,4 +61,9 @@
a.size.should == 0
lambda { a << 123 }.should raise_error(RuntimeError)
end
+
+ it "can be transformed to yaml using #to_yaml" do
+ require 'yaml'
+ NSArray.arrayWithArray([1, 2, 42]).to_yaml.should == "--- \n- 1\n- 2\n- 42\n"
+ end
end
Modified: MacRuby/trunk/spec/macruby/core/hash_spec.rb
===================================================================
--- MacRuby/trunk/spec/macruby/core/hash_spec.rb 2010-04-27 05:54:42 UTC (rev 3966)
+++ MacRuby/trunk/spec/macruby/core/hash_spec.rb 2010-04-28 03:01:10 UTC (rev 3967)
@@ -47,6 +47,10 @@
end
describe "An NSDictionary object" do
+ before(:all) do
+ require 'yaml'
+ end
+
it "is an instance of the Hash class" do
a = NSDictionary.dictionary
a.is_a?(Hash).should == true
@@ -61,4 +65,15 @@
a.size.should == 0
lambda { a[42] = 123 }.should raise_error(RuntimeError)
end
+
+ it "can be transformed to yaml using #to_yaml" do
+ NSDictionary.dictionaryWithDictionary({:a => "ok", :c => 42}).to_yaml.should == "--- \n:a: ok\n:c: 42\n"
+ end
+
+ it "can include Foundation objects and be correctly transformed to yaml" do
+ a = NSString.stringWithString("a")
+ ok = NSString.stringWithString("ok")
+ ary = NSArray.arrayWithArray([42, 21])
+ NSDictionary.dictionaryWithDictionary({a => ok, :c => ary}).to_yaml.should == "--- \na: ok\n:c:\n- 42\n- 21\n"
+ end
end
Modified: MacRuby/trunk/spec/macruby/core/string_spec.rb
===================================================================
--- MacRuby/trunk/spec/macruby/core/string_spec.rb 2010-04-27 05:54:42 UTC (rev 3966)
+++ MacRuby/trunk/spec/macruby/core/string_spec.rb 2010-04-28 03:01:10 UTC (rev 3967)
@@ -63,4 +63,9 @@
it "forwards the block when calling a ruby method" do
NSString.stringWithString("ybuRcaM").sub(/.+/) { |s| s.reverse }.should == "MacRuby"
end
+
+ it "can be transformed to yaml using #to_yaml" do
+ require 'yaml'
+ NSString.stringWithString("ok").to_yaml.should == "--- ok\n"
+ end
end
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100427/9b6ddefd/attachment.html>
More information about the macruby-changes
mailing list