Module: Lanes::Extensions
- Extended by:
- Enumerable
- Defined in:
- lib/lanes/extension.rb,
lib/lanes/extension/definition.rb
Defined Under Namespace
Classes: Base, Definition
Constant Summary
collapse
- ALL =
Array.new
Class Method Summary
collapse
Class Method Details
.add(klass) ⇒ Object
26
27
28
29
30
31
32
33
|
# File 'lib/lanes/extension.rb', line 26
def add(klass)
@cached_instances = nil
if Extensions.controlling_locked
ALL.unshift(klass)
else
ALL << klass
end
end
|
.all ⇒ Object
35
36
37
|
# File 'lib/lanes/extension.rb', line 35
def all
ALL
end
|
.client_bootstrap_data ⇒ Object
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
# File 'lib/lanes/extension.rb', line 94
def client_bootstrap_data
data = {
api_path: Lanes.config.api_path,
root_path: Lanes.config.mounted_at,
root_view: Lanes.config.root_view,
environment: Lanes.config.environment,
assets_path_prefix: Lanes.config.assets_path_prefix,
controlling_extension: controlling.identifier,
initial_workspace_screen_id: Lanes.config.initial_workspace_screen_id
}
each do | ext |
ext_data = ext.client_bootstrap_data
data[ext.identifier] = ext_data unless ext_data.nil?
end
return data
end
|
.controlling ⇒ Object
88
89
90
91
92
|
# File 'lib/lanes/extension.rb', line 88
def controlling
last = ALL.last
each{|ext| return ext if ext.is_a?(last) }
Lanes.logger.error "Unable to find controlling extension. #{sorted} are loaded"
end
|
.each(reversed: false) ⇒ Object
81
82
83
84
85
86
|
# File 'lib/lanes/extension.rb', line 81
def each(reversed: false)
@cached_instances ||= sorted.map{ |klass| klass.new }
(reversed ? @cached_instances.reverse : @cached_instances).each do |ext|
yield ext
end
end
|
.each_asset(phase: :early, type: :js) ⇒ Object
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'lib/lanes/extension.rb', line 44
def each_asset(phase: :early, type: :js)
each do |ext|
if phase == :all || ext.load_phase == phase
asset = case type
when :js then ext.javascript_include
when :css then ext.stylesheet_include
else nil
end
yield asset unless asset.nil?
end
end
end
|
.for_identifier(identifier) ⇒ Object
39
40
41
42
|
# File 'lib/lanes/extension.rb', line 39
def for_identifier(identifier)
each{|ext| return ext if ext.identifier == identifier }
nil
end
|
.load_controlling_config ⇒ Object
111
112
113
114
115
116
|
# File 'lib/lanes/extension.rb', line 111
def load_controlling_config
config_file = self.controlling.root_path.join('config','lanes.rb')
if config_file.exist?
require config_file
end
end
|
.load_screens ⇒ Object
11
12
13
14
15
16
17
18
|
# File 'lib/lanes/extension.rb', line 11
def load_screens
each do | ext |
screens_config = ext.root_path.join('config','screens.rb')
if screens_config.exist?
require screens_config
end
end
end
|
.lock_controlling! ⇒ Object
lock the current controlling extension so that it can’t be changed by other extensions that are loaded later
22
23
24
|
# File 'lib/lanes/extension.rb', line 22
def lock_controlling!
self.controlling_locked=true
end
|
.sorted ⇒ Object
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# File 'lib/lanes/extension.rb', line 57
def sorted
unmapped = all
mapped = []
while unmapped.any?
mapped_count = mapped.length
unmapped.each do | ext |
if !ext.before && !ext.after
mapped.push(ext)
end
if ext.before && (position = mapped.find_index(ext.before))
mapped.insert(position, ext)
end
if ext.after && (position = mapped.find_index(ext.after))
mapped.insert(position+1, ext)
end
end
if mapped_count == mapped.length
Lanes.logger.info "Conflicting load directives. Some extensions will not be available"
end
unmapped -= mapped
end
mapped
end
|