Class: CanTango::Configuration::Engines
- Inherits:
-
Registry::Hash
show all
- Includes:
- Enumerable, Singleton
- Defined in:
- lib/cantango/configuration/engines.rb
Instance Attribute Summary
#default, #registered
Instance Method Summary
collapse
#<<, #[], #[]=, #clean!, #default, #default!, #default=, #registered, #registered?, #registered_names, #registered_value?, #registered_values, #types, #types=, #unregister, #value_methods, #value_types
#[], #clean!, #default!, #registered?, #types, #types=
Instance Method Details
#active ⇒ Object
83
84
85
|
# File 'lib/cantango/configuration/engines.rb', line 83
def active
available.select {|engine| send(engine).on? if respond_to?(engine) }
end
|
#active?(name) ⇒ Boolean
79
80
81
|
# File 'lib/cantango/configuration/engines.rb', line 79
def active? name
active.include? name.to_sym
end
|
#all(state) ⇒ Object
61
62
63
|
# File 'lib/cantango/configuration/engines.rb', line 61
def all state
available.each {|engine| send(engine).set state }
end
|
#any?(state) ⇒ Boolean
65
66
67
|
# File 'lib/cantango/configuration/engines.rb', line 65
def any? state
available.any? {|engine| send(engine).send(:"#{state}?") if respond_to?(engine) }
end
|
#available ⇒ Object
53
54
55
|
# File 'lib/cantango/configuration/engines.rb', line 53
def available
registered_names
end
|
#available?(name) ⇒ Boolean
57
58
59
|
# File 'lib/cantango/configuration/engines.rb', line 57
def available? name
available.include? name.to_s
end
|
#clear! ⇒ Object
69
70
71
72
73
|
# File 'lib/cantango/configuration/engines.rb', line 69
def clear!
each {|engine| engine.reset! }
@registered = nil
@execution_order = nil
end
|
#dont_execute(name) ⇒ Object
21
22
23
|
# File 'lib/cantango/configuration/engines.rb', line 21
def dont_execute name
execution_order.delete(name.to_s)
end
|
#each ⇒ Object
75
76
77
|
# File 'lib/cantango/configuration/engines.rb', line 75
def each
available.each {|engine| yield send(engine) if respond_to?(engine) }
end
|
#execute_after(existing, name) ⇒ Object
42
43
44
45
46
47
|
# File 'lib/cantango/configuration/engines.rb', line 42
def execute_after existing, name
dont_execute name
index = execution_order.index(existing.to_s)
index ? execution_order.insert(index +1, name.to_s) : execute_last(name)
execution_order.compact!
end
|
#execute_before(existing, name) ⇒ Object
35
36
37
38
39
40
|
# File 'lib/cantango/configuration/engines.rb', line 35
def execute_before existing, name
dont_execute name
index = execution_order.index(existing.to_s) || 0
execution_order.insert(index, name.to_s)
execution_order.compact!
end
|
#execute_first(name) ⇒ Object
25
26
27
28
|
# File 'lib/cantango/configuration/engines.rb', line 25
def execute_first name
dont_execute name
execution_order.insert(0, name.to_s)
end
|
#execute_last(name) ⇒ Object
30
31
32
33
|
# File 'lib/cantango/configuration/engines.rb', line 30
def execute_last name
dont_execute name
execution_order.insert(-1, name.to_s)
end
|
#execution_order ⇒ Object
49
50
51
|
# File 'lib/cantango/configuration/engines.rb', line 49
def execution_order
@execution_order ||= (available - [:cache])
end
|
#register(hash) ⇒ Object
engine registry is a simple hash
8
9
10
11
12
13
14
|
# File 'lib/cantango/configuration/engines.rb', line 8
def register hash
hash.each_pair do |name, engine_class|
raise "Class must implement the CanTango Engine API. You can start by sublclassing CanTango::Engine" if !engine? engine_class
raise "Name of engine must be a String or Symbol" if !name.kind_of_label?
registered[name.to_s] = engine_class
end
end
|
#set_execution_order(*names) ⇒ Object
defines the order of execution of engine in ability
17
18
19
|
# File 'lib/cantango/configuration/engines.rb', line 17
def set_execution_order *names
@execution_order = names.flatten.uniq.map(&:to_s).select {|name| available? name }
end
|