Class: Middleman::CoreExtensions::Collections::CollectionsExtension
- Inherits:
-
Extension
- Object
- Extension
- Middleman::CoreExtensions::Collections::CollectionsExtension
show all
- Defined in:
- middleman-core/lib/middleman-core/core_extensions/collections.rb
Constant Summary
Constants included
from Contracts
Contracts::PATH_MATCHER
Instance Attribute Summary collapse
Attributes inherited from Extension
#app, #options
Instance Method Summary
collapse
Methods inherited from Extension
activated_extension, #add_exposed_to_context, #after_build, #after_configuration, #after_extension_activated, after_extension_activated, #before_build, clear_after_extension_callbacks, config, define_setting, expose_to_application, expose_to_config, expose_to_template, global_config, helpers, #manipulate_resource_list, option, #ready, resources
Methods included from Contracts
#Contract
Constructor Details
#initialize(app, options_hash = ::Middleman::EMPTY_HASH, &block) ⇒ CollectionsExtension
Returns a new instance of CollectionsExtension.
39
40
41
42
43
44
45
46
47
48
49
|
# File 'middleman-core/lib/middleman-core/core_extensions/collections.rb', line 39
def initialize(app, options_hash = ::Middleman::EMPTY_HASH, &block)
super
@leaves = Set.new
@collectors_by_name = {}
@values_by_name = {}
@collector_roots = []
@lock = Monitor.new
end
|
Instance Attribute Details
#leaves ⇒ Object
Returns the value of attribute leaves.
22
23
24
|
# File 'middleman-core/lib/middleman-core/core_extensions/collections.rb', line 22
def leaves
@leaves
end
|
Instance Method Details
#before_configuration ⇒ Object
51
52
53
|
# File 'middleman-core/lib/middleman-core/core_extensions/collections.rb', line 51
def before_configuration
@leaves.clear
end
|
#collector_value(label) ⇒ Object
79
80
81
|
# File 'middleman-core/lib/middleman-core/core_extensions/collections.rb', line 79
def collector_value(label)
@values_by_name[label]
end
|
#data_collector ⇒ Object
63
64
65
|
# File 'middleman-core/lib/middleman-core/core_extensions/collections.rb', line 63
def data_collector
live_collector { |app, _| app.data }
end
|
#live_collector(&block) ⇒ Object
67
68
69
70
71
72
73
74
75
76
|
# File 'middleman-core/lib/middleman-core/core_extensions/collections.rb', line 67
def live_collector(&block)
root = LazyCollectorRoot.new(self)
@collector_roots << {
root: root,
block: block
}
root
end
|
#manipulate_resource_list_container!(resource_list) ⇒ Object
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
# File 'middleman-core/lib/middleman-core/core_extensions/collections.rb', line 84
def manipulate_resource_list_container!(resource_list)
@lock.synchronize do
@collector_roots.each do |pair|
dataset = pair[:block].call(app, resource_list)
pair[:root].realize!(dataset)
end
ctx = StepContext.new(app)
StepContext.current = ctx
leaves = @leaves.dup
@collectors_by_name.each do |k, v|
@values_by_name[k] = v.value(ctx)
leaves.delete v
end
leaves.each do |v|
v.value(ctx)
end
ctx.descriptors.each do |d|
d.execute_descriptor(app, resource_list)
end
StepContext.current = nil
end
end
|
#register_collector(label, endpoint) ⇒ Object
55
56
57
|
# File 'middleman-core/lib/middleman-core/core_extensions/collections.rb', line 55
def register_collector(label, endpoint)
@collectors_by_name[label] = endpoint
end
|
#sitemap_collector ⇒ Object
59
60
61
|
# File 'middleman-core/lib/middleman-core/core_extensions/collections.rb', line 59
def sitemap_collector
live_collector { |_, resources| resources.to_a }
end
|