[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

String to Class

Roberto Decurnex Gorosito

2/4/2008 7:22:00 PM

[Note: parts of this message were removed to make it a legal post.]

Is it possible to convert a String into a Class id?

Something like 'Array'.to_class.new

2 Answers

Wolfgang Nádasi-donner

2/4/2008 7:30:00 PM

0

Roberto Eduardo Decurnex Gorosito wrote:
> Is it possible to convert a String into a Class id?
>
> Something like 'Array'.to_class.new

Object.const_get("Array").new

Wolfgang Nádasi-Donner
--
Posted via http://www.ruby-....

Rob Biedenharn

2/4/2008 9:13:00 PM

0


On Feb 4, 2008, at 2:30 PM, Wolfgang N=E1dasi-Donner wrote:

> Roberto Eduardo Decurnex Gorosito wrote:
>> Is it possible to convert a String into a Class id?
>>
>> Something like 'Array'.to_class.new
>
> Object.const_get("Array").new
>
> Wolfgang N=E1dasi-Donner

Or more generally,
# from Jim Weirich (based on email correspondence)
def constantize(camel_cased_word)
camel_cased_word.
sub(/^::/,'').
split("::").
inject(Object) { |scope, name| scope.const_get(name) }
end

Also, you can see how ActiveSupport does it for Rails:

# File vendor/rails/activesupport/lib/active_support/inflector.rb, =20
line 245
245: def constantize(camel_cased_word)
246: unless /\A(?:::)?([A-Z]\w*(?:::[A-Z]\w*)*)\z/ =3D~ =
camel_cased_word
247: raise NameError, "#{camel_cased_word.inspect} is not a valid =20=

constant name!"
248: end
249:
250: Object.module_eval("::#{$1}", __FILE__, __LINE__)
251: end

-Rob

Rob Biedenharn http://agileconsult...
Rob@AgileConsultingLLC.com