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

Reply via email to