They won't probably work exactly the same way as IronRuby mangling though. So 
if you need this for CLR interop you should use IronRuby::Clr::Name class.

Tomas

From: ironruby-core-boun...@rubyforge.org 
[mailto:ironruby-core-boun...@rubyforge.org] On Behalf Of Orion Edwards
Sent: Monday, January 18, 2010 12:41 PM
To: ironruby-core@rubyforge.org
Subject: Re: [Ironruby-core] Accessing classes defined in IronRuby.dll from 
within IronRuby (IronRuby 1.0RC1)

Thanks for that Tomas.

I ended up copy/pasting the String#camelize and #underscore methods from rails 
as they were only a couple of lines long. This is probably less error prone 
than importing types from the IronRuby dll in the long run anyway :-)

Cheers.
On Mon, Jan 18, 2010 at 7:35 PM, Tomas Matousek 
<tomas.matou...@microsoft.com<mailto:tomas.matou...@microsoft.com>> wrote:
BTW, if you really needed to get to IronRuby.dll's types you can use this 
workaround:

>>> Utils = System::Type.get_type('IronRuby.Runtime.RubyUtils, 
>>> IronRuby').to_class
=> IronRuby::Runtime::RubyUtils
>>> Utils.try_unmangle_name("foo_bar")
=> 'FooBar'

Tomas

From: 
ironruby-core-boun...@rubyforge.org<mailto:ironruby-core-boun...@rubyforge.org> 
[mailto:ironruby-core-boun...@rubyforge.org<mailto:ironruby-core-boun...@rubyforge.org>]
 On Behalf Of Tomas Matousek
Sent: Sunday, January 17, 2010 10:24 PM

To: ironruby-core@rubyforge.org<mailto:ironruby-core@rubyforge.org>
Subject: Re: [Ironruby-core] Accessing classes defined in IronRuby.dll from 
within IronRuby (IronRuby 1.0RC1)

IronRuby is a module already defined in standard library. It gives you access 
to a bunch of useful APIs, including name mangling:

>>> IronRuby.singleton_methods
=> ["configuration", "globals", "load", "loaded_assemblies", "loaded_scripts", 
"require", 'create_runtime', 'create_engine', 'create_ruby_setup', 
'get_engine', 'require_file', 'get_execution_context']
>>> IronRuby.constants
=> ["Clr", "Print"]
>>> IronRuby::Clr.constants
=> ["BigInteger", "FlagEnumeration", "Float", "Integer", 
"MultiDimensionalArray", "String", "Name", "Scope"]
>>> IronRuby::Clr::Name.singleton_methods(false)
=> ["clr_to_ruby", "mangle", "ruby_to_clr", "unmangle"]
>>> include IronRuby::Clr
>>> Name.mangle("FooBar")
=> "foo_bar"
>>> Name.unmangle("my_foo")
=> "MyFoo"

Re loading IronRuby.dll - the problem is that IronRuby is also a namespace in 
IronRuby.dll so there is a name conflict we don't probably handle the best we 
could. Loading IronRuby.dll shouldn't be a common scenario though. The best 
place for IronRuby specific functionality is in the IronRuby module. If you're 
missing some let us know.

Tomas

From: 
ironruby-core-boun...@rubyforge.org<mailto:ironruby-core-boun...@rubyforge.org> 
[mailto:ironruby-core-boun...@rubyforge.org<mailto:ironruby-core-boun...@rubyforge.org>]
 On Behalf Of Orion Edwards
Sent: Sunday, January 17, 2010 8:29 PM
To: ironruby-core@rubyforge.org<mailto:ironruby-core@rubyforge.org>
Subject: Re: [Ironruby-core] Accessing classes defined in IronRuby.dll from 
within IronRuby (IronRuby 1.0RC1)

I am doing load_assembly 'IronRuby', and it didn't work (the example is 
copy/pasted pretty much verbatim). Not sure if that means your version of IR is 
different to mine, or what?

Cheers,
On Mon, Jan 18, 2010 at 3:56 PM, Jimmy Schementi 
<jimmy.scheme...@microsoft.com<mailto:jimmy.scheme...@microsoft.com>> wrote:
load_assembly 'IronRuby' will do the trick.

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

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

Reply via email to