class Middleman::CoreExtensions::Collections::CollectionsExtension
Attributes
leaves[RW]
Public Class Methods
new(app, options_hash={}, &block)
click to toggle source
Calls superclass method
# File lib/middleman-core/core_extensions/collections.rb, line 37 def initialize(app, options_hash={}, &block) super @leaves = Set.new @collectors_by_name = {} @values_by_name = {} @collector_roots = [] @lock = Monitor.new end
Public Instance Methods
before_configuration()
click to toggle source
# File lib/middleman-core/core_extensions/collections.rb, line 49 def before_configuration @leaves.clear end
collector_value(label)
click to toggle source
# File lib/middleman-core/core_extensions/collections.rb, line 81 def collector_value(label) @values_by_name[label] end
data_collector()
click to toggle source
# File lib/middleman-core/core_extensions/collections.rb, line 64 def data_collector live_collector { |app, _| app.data } end
live_collector(&block)
click to toggle source
# File lib/middleman-core/core_extensions/collections.rb, line 69 def live_collector(&block) root = LazyCollectorRoot.new(self) @collector_roots << { root: root, block: block } root end
manipulate_resource_list(resources)
click to toggle source
# File lib/middleman-core/core_extensions/collections.rb, line 86 def manipulate_resource_list(resources) @lock.synchronize do @collector_roots.each do |pair| dataset = pair[:block].call(app, resources) 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 # Execute code paths leaves.each do |v| v.value(ctx) end # Inject descriptors results = ctx.descriptors.reduce(resources) do |sum, d| d.execute_descriptor(app, sum) end StepContext.current = nil results end end
pagination()
click to toggle source
# File lib/middleman-core/core_extensions/collections.rb, line 32 def pagination current_resource.data.pagination end
register_collector(label, endpoint)
click to toggle source
# File lib/middleman-core/core_extensions/collections.rb, line 54 def register_collector(label, endpoint) @collectors_by_name[label] = endpoint end
sitemap_collector()
click to toggle source
# File lib/middleman-core/core_extensions/collections.rb, line 59 def sitemap_collector live_collector { |_, resources| resources } end