Class: Inclusion
- Inherits:
-
Object
- Object
- Inclusion
- Defined in:
- lib/inclusion/inclusion.rb
Instance Attribute Summary collapse
-
#inclusion_names ⇒ Object
readonly
Returns the value of attribute inclusion_names.
-
#obj ⇒ Object
readonly
Returns the value of attribute obj.
Class Method Summary collapse
Instance Method Summary collapse
- #! ⇒ Object
- #extend(mod) ⇒ Object
- #extend_obj ⇒ Object
- #includion_mod(mod, inner) ⇒ Object
- #inclusion ⇒ Object
- #inclusion_defined?(mod, inner) ⇒ Boolean
-
#initialize(obj, inclusion_names) ⇒ Inclusion
constructor
A new instance of Inclusion.
- #obj_const ⇒ Object
Constructor Details
#initialize(obj, inclusion_names) ⇒ Inclusion
Returns a new instance of Inclusion.
9 10 11 12 |
# File 'lib/inclusion/inclusion.rb', line 9 def initialize(obj, inclusion_names) @obj = obj @inclusion_names = inclusion_names end |
Instance Attribute Details
#inclusion_names ⇒ Object (readonly)
Returns the value of attribute inclusion_names.
3 4 5 |
# File 'lib/inclusion/inclusion.rb', line 3 def inclusion_names @inclusion_names end |
#obj ⇒ Object (readonly)
Returns the value of attribute obj.
2 3 4 |
# File 'lib/inclusion/inclusion.rb', line 2 def obj @obj end |
Class Method Details
.!(obj, *inclusion_names) ⇒ Object
14 15 16 |
# File 'lib/inclusion/inclusion.rb', line 14 def self.!(obj, *inclusion_names) new(obj, inclusion_names).! end |
Instance Method Details
#! ⇒ Object
18 19 20 |
# File 'lib/inclusion/inclusion.rb', line 18 def ! extend_obj end |
#extend(mod) ⇒ Object
26 27 28 29 |
# File 'lib/inclusion/inclusion.rb', line 26 def extend(mod) obj.extend mod if mod mod end |
#extend_obj ⇒ Object
22 23 24 |
# File 'lib/inclusion/inclusion.rb', line 22 def extend_obj extend(inclusion) end |
#includion_mod(mod, inner) ⇒ Object
67 68 69 |
# File 'lib/inclusion/inclusion.rb', line 67 def includion_mod(mod, inner) mod.const_get(inner, search_ancestors=false) end |
#inclusion ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/inclusion/inclusion.rb', line 31 def inclusion inclusions = inclusion_names.dup inclusion = nil mod = obj_const inclusions.inject(mod) do |mod_name, inner_mod_name| unless inclusion_defined?(mod, inner_mod_name) break end inclusion = includion_mod(mod, inner_mod_name) mod = inclusion inner_mod_name end inclusion end |
#inclusion_defined?(mod, inner) ⇒ Boolean
71 72 73 |
# File 'lib/inclusion/inclusion.rb', line 71 def inclusion_defined?(mod, inner) mod.const_defined?(inner, search_ancestors=false) end |
#obj_const ⇒ Object
5 6 7 |
# File 'lib/inclusion/inclusion.rb', line 5 def obj_const @obj_const ||= ([Module, Class].include?(obj.class) ? obj : obj.class) end |