Hey John,
I think we'll need to move the to_yaml definition for String into
NSString in the MacRuby case.
I tried to do that as an example [1], but it seems that NSString
completely breaks after opening the class, but this is probably just a
bug in 0.4:
"--- foo\n"
"--- !str:NSString foo\n"
untitled:28:in `<main>': undefined method `stringWithString' for
NSString:Class (NoMethodError)
So for now a workaround like the following might do:
require "yaml"
def String(str)
NSMutableString.stringWithString(str)
end
p NSMutableString.stringWithString('foo').to_yaml # => "--- foo\n"
p String(NSString.stringWithString('foo')).to_yaml # => "--- foo\n"
Cheers,
Eloy
[1]:
require "yaml"
p NSMutableString.stringWithString('foo').to_yaml # => "--- foo\n"
p NSString.stringWithString('foo').to_yaml # => "--- !str:NSString foo
\n"
# YAML String definition
class NSString
def to_yaml( opts = {} )
YAML::quick_emit( is_complex_yaml? ? object_id : nil, opts ) do |
out|
if is_binary_data?
out.scalar( "tag:yaml.org,2002:binary",
[self].pack("m"), :literal )
elsif to_yaml_properties.empty?
out.scalar( taguri, self, self =~ /^:/ ? :quote2 :
to_yaml_style )
else
out.map( taguri, to_yaml_style ) do |map|
map.add( 'str', "#{self}" )
to_yaml_properties.each do |m|
map.add( m, instance_variable_get( m ) )
end
end
end
end
end
end
p NSString.stringWithString('foo').to_yaml # => "--- !str:NSString foo
\n"
On Apr 17, 2009, at 3:05 PM, John Shea wrote:
Hello everyone,
I notice that NSMutableString nicely turns into a plain string when
you #to_yaml it.
Thats great since plays nicely with other ruby code.
NSString however becomes "!str:NSString" - is that by
design?
It would not matter to me except that #stringValue from NSTextFields
returns NSString - which i must first copy to a NSMutableString
before I #to_yaml it.
Just wondering if there is a more elegant way.
Cheers,
John
_______________________________________________
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