Module: Tins::DeepConstGet
- Extended by:
- Deprecate
- Defined in:
- lib/tins/deep_const_get.rb
Instance Method Summary collapse
-
#const_defined_in?(modul, constant) ⇒ Boolean
:nocov: We do not create coverage on 1.8.
- #deep_const_get(path, start_module = Object) ⇒ Object
Methods included from Deprecate
Instance Method Details
#const_defined_in?(modul, constant) ⇒ Boolean
:nocov: We do not create coverage on 1.8
9 10 11 |
# File 'lib/tins/deep_const_get.rb', line 9 def const_defined_in?(modul, constant) modul.const_defined?(constant) end |
#deep_const_get(path, start_module = Object) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/tins/deep_const_get.rb', line 25 def deep_const_get(path, start_module = Object) path.to_s.split('::').inject(start_module) do |p, c| case when c.empty? if start_module == Object Object else raise ArgumentError, "top level constants cannot be reached from"\ " start module #{start_module.inspect}" end when const_defined_in?(p, c) p.const_get(c) else begin p.const_missing(c) rescue NameError => e raise ArgumentError, "can't get const #{path}: #{e}" end end end end |