[MacRuby-devel] strings to yaml
John Shea
johnmacshea at gmail.com
Fri Apr 17 07:10:41 PDT 2009
Hi Eloy,
I was doing:
"#{field.stringValue}".to_yaml
which in 6 months time i will be scratching my head wondering why - so
your suggestions are very helpful - thanks!
Cheers,
J
On Apr 17, 2009, at 15:31 , Eloy Duran wrote:
> 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 at lists.macosforge.org
>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
More information about the MacRuby-devel
mailing list