Module: Lanes::Extensions
- 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
.all ⇒ Object
33
34
35
|
# File 'lib/lanes/extension.rb', line 33
def all
ALL
end
|
.client_bootstrap_data(view) ⇒ Object
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
# File 'lib/lanes/extension.rb', line 92
def client_bootstrap_data(view)
data = {
csrf_token: Rack::Csrf.csrf_token(view.env),
controlling_extension: controlling.identifier,
root_view: Lanes.config.root_view,
api_path: Lanes.config.mounted_at,
environment: Lanes.config.environment,
initial_workspace_screen_id: Lanes.config.initial_workspace_screen_id,
pub_sub: require_pub_sub?
}
each do | ext |
data[ext.identifier] = ext.client_bootstrap_data(view)
end
return data
end
|
.controlling ⇒ Object
86
87
88
89
90
|
# File 'lib/lanes/extension.rb', line 86
def controlling
last = ALL.last
each{|ext| return ext if ext.is_a?(last) }
LanesExtension.new end
|
.each ⇒ Object
82
83
84
|
# File 'lib/lanes/extension.rb', line 82
def each
sorted.map{ |klass| yield klass.new }
end
|
.each_asset(phase: :early, type: :js) ⇒ Object
45
46
47
48
49
50
51
52
53
54
55
56
|
# File 'lib/lanes/extension.rb', line 45
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
|
.load_after(extension) ⇒ Object
25
26
27
|
# File 'lib/lanes/extension.rb', line 25
def load_after(extension)
self.after = extension
end
|
.load_before(extension) ⇒ Object
29
30
31
|
# File 'lib/lanes/extension.rb', line 29
def load_before(extension)
self.before = extension
end
|
.load_controlling_config ⇒ Object
108
109
110
111
112
113
|
# File 'lib/lanes/extension.rb', line 108
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
10
11
12
13
14
15
16
17
|
# File 'lib/lanes/extension.rb', line 10
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
21
22
23
|
# File 'lib/lanes/extension.rb', line 21
def lock_controlling!
self.controlling_locked=true
end
|
.require_pub_sub? ⇒ Boolean
41
42
43
|
# File 'lib/lanes/extension.rb', line 41
def require_pub_sub?
all.any?{|ext| ext.uses_pub_sub }
end
|
.require_workspace? ⇒ Boolean
37
38
39
|
# File 'lib/lanes/extension.rb', line 37
def require_workspace?
all.any?{|ext| ext.uses_workspace }
end
|
.sorted ⇒ Object
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
# File 'lib/lanes/extension.rb', line 58
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
|