Class: Inclusion

Inherits:
Object
  • Object
show all
Defined in:
lib/inclusion/inclusion.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(obj, inclusion_name) ⇒ Inclusion

Returns a new instance of Inclusion.



5
6
7
8
# File 'lib/inclusion/inclusion.rb', line 5

def initialize(obj, inclusion_name)
  @obj = obj
  @inclusion_name = inclusion_name
end

Instance Attribute Details

#inclusion_nameObject (readonly)

Returns the value of attribute inclusion_name.



3
4
5
# File 'lib/inclusion/inclusion.rb', line 3

def inclusion_name
  @inclusion_name
end

#objObject (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_name) ⇒ Object



10
11
12
13
# File 'lib/inclusion/inclusion.rb', line 10

def self.!(obj, inclusion_name)
  instance = new obj, inclusion_name
  instance.!
end

Instance Method Details

#!Object



15
16
17
# File 'lib/inclusion/inclusion.rb', line 15

def !
  extend_obj
end

#definedObject



34
35
36
# File 'lib/inclusion/inclusion.rb', line 34

def defined
  obj_const.const_defined?(inclusion_name, search_ancestors=false)
end

#extend_objObject



19
20
21
22
23
24
25
26
27
# File 'lib/inclusion/inclusion.rb', line 19

def extend_obj
  extension = self.extension

  if extension.nil?
    return obj
  end

  obj.extend extension
end

#extensionObject



29
30
31
32
# File 'lib/inclusion/inclusion.rb', line 29

def extension
  return nil unless defined
  obj_const.const_get(inclusion_name, search_ancestors=false)
end

#obj_constObject



38
39
40
# File 'lib/inclusion/inclusion.rb', line 38

def obj_const
  ([Module, Class].include?(obj.class) ? obj : obj.class)
end