Ruby Forum IronRuby > Stupid to_clr_string

Posted by Sean Clark Hess (Guest)
on 15.08.2008 18:27
(Received via mailing list)
Ok, I keep running into this over and over.  Whenever Silverlight passes 
a
string to javascript, it comes out as some unreadable object.  You have 
to
call to_clr_string to get it working.
This is ok... You can monkey patch some of the javascript library code 
to
fix it, but with HtmlPage.window.invoke, for example, it's not easy to 
do
because it sends a variable number of arguments.

Is this being fixed? Or is this something we're going to have to deal 
with
for a while?

Thanks
~sean
Posted by Curt Hagenlocher (Guest)
on 15.08.2008 18:35
(Received via mailing list)
This isn't a Silverlight issue but an IronRuby one.  A Ruby string 
simply isn't the same as a CLR string - the Ruby string is mutable while 
the CLR string is not.

We need to come up with a cohesive plan for dealing with the difference 
before we can "fix" anything.

From: ironruby-core-bounces@rubyforge.org 
[mailto:ironruby-core-bounces@rubyforge.org] On Behalf Of Sean Clark 
Hess
Sent: Friday, August 15, 2008 9:25 AM
To: ironruby-core@rubyforge.org
Subject: [Ironruby-core] Stupid to_clr_string

Ok, I keep running into this over and over.  Whenever Silverlight passes 
a string to javascript, it comes out as some unreadable object.  You 
have to call to_clr_string to get it working.

This is ok... You can monkey patch some of the javascript library code 
to fix it, but with HtmlPage.window.invoke, for example, it's not easy 
to do because it sends a variable number of arguments.

Is this being fixed? Or is this something we're going to have to deal 
with for a while?

Thanks
~sean
Posted by Sean Clark Hess (Guest)
on 15.08.2008 18:41
(Received via mailing list)
Ah, makes sense.  I'm totally unfamiliar with the way IronRuby is
implemented. Is it possible to switch it to a clr string any time it 
calls
any framework code? (like the invoke function I'm using).
~sean
Posted by Curt Hagenlocher (Guest)
on 15.08.2008 18:46
(Received via mailing list)
The binder could automatically create a conversion - in effect, calling 
to_clr_string for you automatically.  But it might be a little strange 
for the binder to do that automatically in one direction and not the 
other - which is why I said that there needs to be a plan before we make 
any changes.

From: ironruby-core-bounces@rubyforge.org 
[mailto:ironruby-core-bounces@rubyforge.org] On Behalf Of Sean Clark 
Hess
Sent: Friday, August 15, 2008 9:39 AM
To: ironruby-core@rubyforge.org
Subject: Re: [Ironruby-core] Stupid to_clr_string

Ah, makes sense.  I'm totally unfamiliar with the way IronRuby is 
implemented. Is it possible to switch it to a clr string any time it 
calls any framework code? (like the invoke function I'm using).

~sean
On Fri, Aug 15, 2008 at 10:33 AM, Curt Hagenlocher 
<curth@microsoft.com<mailto:curth@microsoft.com>> wrote:

This isn't a Silverlight issue but an IronRuby one.  A Ruby string 
simply isn't the same as a CLR string - the Ruby string is mutable while 
the CLR string is not.



We need to come up with a cohesive plan for dealing with the difference 
before we can "fix" anything.



From: 
ironruby-core-bounces@rubyforge.org<mailto:ironruby-core-bounces@rubyforge.org> 
[mailto:ironruby-core-bounces@rubyforge.org<mailto:ironruby-core-bounces@rubyforge.org>] 
On Behalf Of Sean Clark Hess
Sent: Friday, August 15, 2008 9:25 AM
To: ironruby-core@rubyforge.org<mailto:ironruby-core@rubyforge.org>
Subject: [Ironruby-core] Stupid to_clr_string



Ok, I keep running into this over and over.  Whenever Silverlight passes 
a string to javascript, it comes out as some unreadable object.  You 
have to call to_clr_string to get it working.



This is ok... You can monkey patch some of the javascript library code 
to fix it, but with HtmlPage.window.invoke, for example, it's not easy 
to do because it sends a variable number of arguments.



Is this being fixed? Or is this something we're going to have to deal 
with for a while?



Thanks

~sean
Posted by Curt Hagenlocher (Guest)
on 15.08.2008 18:48
(Received via mailing list)
...oh, if the CLR interface we're calling is typed to System.Object 
instead of System.String, then we probably can't do any kind of 
automatic conversion.

From: ironruby-core-bounces@rubyforge.org 
[mailto:ironruby-core-bounces@rubyforge.org] On Behalf Of Sean Clark 
Hess
Sent: Friday, August 15, 2008 9:39 AM
To: ironruby-core@rubyforge.org
Subject: Re: [Ironruby-core] Stupid to_clr_string

Ah, makes sense.  I'm totally unfamiliar with the way IronRuby is 
implemented. Is it possible to switch it to a clr string any time it 
calls any framework code? (like the invoke function I'm using).

~sean
On Fri, Aug 15, 2008 at 10:33 AM, Curt Hagenlocher 
<curth@microsoft.com<mailto:curth@microsoft.com>> wrote:

This isn't a Silverlight issue but an IronRuby one.  A Ruby string 
simply isn't the same as a CLR string - the Ruby string is mutable while 
the CLR string is not.



We need to come up with a cohesive plan for dealing with the difference 
before we can "fix" anything.



From: 
ironruby-core-bounces@rubyforge.org<mailto:ironruby-core-bounces@rubyforge.org> 
[mailto:ironruby-core-bounces@rubyforge.org<mailto:ironruby-core-bounces@rubyforge.org>] 
On Behalf Of Sean Clark Hess
Sent: Friday, August 15, 2008 9:25 AM
To: ironruby-core@rubyforge.org<mailto:ironruby-core@rubyforge.org>
Subject: [Ironruby-core] Stupid to_clr_string



Ok, I keep running into this over and over.  Whenever Silverlight passes 
a string to javascript, it comes out as some unreadable object.  You 
have to call to_clr_string to get it working.



This is ok... You can monkey patch some of the javascript library code 
to fix it, but with HtmlPage.window.invoke, for example, it's not easy 
to do because it sends a variable number of arguments.



Is this being fixed? Or is this something we're going to have to deal 
with for a while?



Thanks

~sean
Posted by Sean Clark Hess (Guest)
on 15.08.2008 18:50
(Received via mailing list)
Makes sense.
Posted by Jimmy Schementi (Guest)
on 15.08.2008 23:09
(Received via mailing list)
You can monkey-patch the Silverlight classes you're using to do the 
to_clr_string for you. For example HtmlDocument#GetElementById requires 
you pass it a ClrString, which can be annoying from IronRuby. So, you 
can make it take a Ruby string or symbol like this:

module System::Windows::Browser
  class HtmlDocument
    alias_method orig_get_element_by_id, get_element_by_id
    def get_element_by_id(id)
      orig_get_element_by_id(id.to_s.to_clr_string)
    end
  end
end

# usage
include System::Windows:Browser
element = HtmlPage.document.get_element_by_id(:foo)

From: ironruby-core-bounces@rubyforge.org 
[mailto:ironruby-core-bounces@rubyforge.org] On Behalf Of Sean Clark 
Hess
Sent: Friday, August 15, 2008 9:48 AM
To: ironruby-core@rubyforge.org
Subject: Re: [Ironruby-core] Stupid to_clr_string

Makes sense.
On Fri, Aug 15, 2008 at 10:44 AM, Curt Hagenlocher 
<curth@microsoft.com<mailto:curth@microsoft.com>> wrote:

The binder could automatically create a conversion - in effect, calling 
to_clr_string for you automatically.  But it might be a little strange 
for the binder to do that automatically in one direction and not the 
other - which is why I said that there needs to be a plan before we make 
any changes.



From: 
ironruby-core-bounces@rubyforge.org<mailto:ironruby-core-bounces@rubyforge.org> 
[mailto:ironruby-core-bounces@rubyforge.org<mailto:ironruby-core-bounces@rubyforge.org>] 
On Behalf Of Sean Clark Hess
Sent: Friday, August 15, 2008 9:39 AM

To: ironruby-core@rubyforge.org<mailto:ironruby-core@rubyforge.org>
Subject: Re: [Ironruby-core] Stupid to_clr_string



Ah, makes sense.  I'm totally unfamiliar with the way IronRuby is 
implemented. Is it possible to switch it to a clr string any time it 
calls any framework code? (like the invoke function I'm using).



~sean

On Fri, Aug 15, 2008 at 10:33 AM, Curt Hagenlocher 
<curth@microsoft.com<mailto:curth@microsoft.com>> wrote:

This isn't a Silverlight issue but an IronRuby one.  A Ruby string 
simply isn't the same as a CLR string - the Ruby string is mutable while 
the CLR string is not.



We need to come up with a cohesive plan for dealing with the difference 
before we can "fix" anything.



From: 
ironruby-core-bounces@rubyforge.org<mailto:ironruby-core-bounces@rubyforge.org> 
[mailto:ironruby-core-bounces@rubyforge.org<mailto:ironruby-core-bounces@rubyforge.org>] 
On Behalf Of Sean Clark Hess
Sent: Friday, August 15, 2008 9:25 AM
To: ironruby-core@rubyforge.org<mailto:ironruby-core@rubyforge.org>
Subject: [Ironruby-core] Stupid to_clr_string



Ok, I keep running into this over and over.  Whenever Silverlight passes 
a string to javascript, it comes out as some unreadable object.  You 
have to call to_clr_string to get it working.



This is ok... You can monkey patch some of the javascript library code 
to fix it, but with HtmlPage.window.invoke, for example, it's not easy 
to do because it sends a variable number of arguments.



Is this being fixed? Or is this something we're going to have to deal 
with for a while?



Thanks

~sean

_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org<mailto:Ironruby-core@rubyforge.org>
http://rubyforge.org/mailman/listinfo/ironruby-core