Module: TemplateMethod

Included in:
Controls::Extended::Example, Controls::Included::Example, Controls::TemplateMethod::Body::Example, Controls::TemplateMethod::Example, Controls::TemplateMethod::Implemented::Example, Controls::TemplateMethod::Implemented::Module::Example, Controls::TemplateMethod::Implemented::Prior::Example, Controls::TemplateMethod::Variant::Example, Controls::TemplateMethod::Variant::Implemented::Example
Defined in:
lib/template_method/error.rb,
lib/template_method/macro.rb,
lib/template_method/activate.rb,
lib/template_method/controls/clean.rb,
lib/template_method/template_method.rb,
lib/template_method/controls/extended.rb,
lib/template_method/controls/included.rb,
lib/template_method/controls/template_method.rb,
lib/template_method/controls/template_method/body.rb,
lib/template_method/controls/template_method/variant.rb,
lib/template_method/controls/template_method/implemented.rb

Defined Under Namespace

Modules: Controls, Macro

Constant Summary collapse

Error =
Class.new(RuntimeError)

Class Method Summary collapse

Class Method Details

.activate(target_class = nil) ⇒ Object



2
3
4
5
# File 'lib/template_method/activate.rb', line 2

def self.activate(target_class=nil)
  target_class ||= Object
  target_class.extend(TemplateMethod::Macro)
end

.activated?(target_class = nil) ⇒ Boolean

Returns:

  • (Boolean)


7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/template_method/activate.rb', line 7

def self.activated?(target_class=nil)
  target_class ||= Object

  subject = subject_class(target_class)

  Macro.macro_methods.each do |mthd|
    if not subject.respond_to?(mthd)
      return false
    end
  end

  true
end

.extended(cls) ⇒ Object



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

def self.extended(cls)
  activate(cls)
end

.included(cls) ⇒ Object



2
3
4
# File 'lib/template_method/template_method.rb', line 2

def self.included(cls)
  activate(cls)
end

.subject_class(subject) ⇒ Object



21
22
23
24
25
26
27
28
# File 'lib/template_method/activate.rb', line 21

def self.subject_class(subject)
  case subject
  when Module, Class
    subject
  else
    subject.class
  end
end