Module: Kernel
- Defined in:
- lib/candy/qualified_const_get.rb
Overview
From: redcorundum.blogspot.com/2006/05/kernelqualifiedconstget.html We need this to properly handle namespaced class resolution in Candy::Wrapper.unwrap.
Instance Method Summary collapse
Instance Method Details
#qualified_const_get(str) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/candy/qualified_const_get.rb', line 5 def qualified_const_get(str) path = str.to_s.split('::') from_root = path[0].empty? if from_root from_root = [] path = path[1..-1] else start_ns = ((Class === self)||(Module === self)) ? self : self.class from_root = start_ns.to_s.split('::') end until from_root.empty? begin return (from_root+path).inject(Object) { |ns,name| ns.const_get(name) } rescue NameError from_root.delete_at(-1) end end path.inject(Object) { |ns,name| ns.const_get(name) } end |