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.
-
#search_ancestors ⇒ Object
readonly
Returns the value of attribute search_ancestors.
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, search_ancestors: false) ⇒ Inclusion
constructor
A new instance of Inclusion.
- #obj_const ⇒ Object
Constructor Details
#initialize(obj, inclusion_names, search_ancestors: false) ⇒ Inclusion
Returns a new instance of Inclusion.
10 11 12 13 14 |
# File 'lib/inclusion/inclusion.rb', line 10 def initialize(obj, inclusion_names, search_ancestors: false) @obj = obj @inclusion_names = inclusion_names @search_ancestors = search_ancestors 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 |
#search_ancestors ⇒ Object (readonly)
Returns the value of attribute search_ancestors.
4 5 6 |
# File 'lib/inclusion/inclusion.rb', line 4 def search_ancestors @search_ancestors end |
Class Method Details
.!(obj, *inclusion_names, search_ancestors: false) ⇒ Object
16 17 18 |
# File 'lib/inclusion/inclusion.rb', line 16 def self.!(obj, *inclusion_names, search_ancestors: false) new(obj, inclusion_names, search_ancestors: search_ancestors).! end |
Instance Method Details
#! ⇒ Object
20 21 22 |
# File 'lib/inclusion/inclusion.rb', line 20 def ! extend_obj end |
#extend(mod) ⇒ Object
28 29 30 31 |
# File 'lib/inclusion/inclusion.rb', line 28 def extend(mod) obj.extend mod if mod mod end |
#extend_obj ⇒ Object
24 25 26 |
# File 'lib/inclusion/inclusion.rb', line 24 def extend_obj extend(inclusion) end |
#includion_mod(mod, inner) ⇒ Object
69 70 71 |
# File 'lib/inclusion/inclusion.rb', line 69 def includion_mod(mod, inner) mod.const_get(inner, search_ancestors) end |
#inclusion ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/inclusion/inclusion.rb', line 33 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
73 74 75 |
# File 'lib/inclusion/inclusion.rb', line 73 def inclusion_defined?(mod, inner) mod.const_defined?(inner, search_ancestors) end |
#obj_const ⇒ Object
6 7 8 |
# File 'lib/inclusion/inclusion.rb', line 6 def obj_const @obj_const ||= ([Module, Class].include?(obj.class) ? obj : obj.class) end |