WIP - Rendering pipeline.
This commit is contained in:
parent
158c3e9f25
commit
11e478fad9
4 changed files with 48 additions and 1 deletions
19
middleman-core/lib/middleman-core/extensions/pipeline.rb
Normal file
19
middleman-core/lib/middleman-core/extensions/pipeline.rb
Normal file
|
@ -0,0 +1,19 @@
|
|||
class Middleman::Extensions::Pipeline < Middleman::Extension
|
||||
expose_to_config :pipeline
|
||||
|
||||
def initialize(app, options_hash={}, &block)
|
||||
super
|
||||
@pipelines = []
|
||||
end
|
||||
|
||||
def pipeline(&block)
|
||||
@pipelines << block
|
||||
end
|
||||
|
||||
def manipulate_resource_list(resources)
|
||||
@pipelines.each do |pipeline|
|
||||
pipeline.call resources
|
||||
end
|
||||
resources
|
||||
end
|
||||
end
|
24
middleman-core/lib/middleman-core/pipeline.rb
Normal file
24
middleman-core/lib/middleman-core/pipeline.rb
Normal file
|
@ -0,0 +1,24 @@
|
|||
require 'forwardable'
|
||||
|
||||
module Middleman
|
||||
class Pipeline
|
||||
extend Forwardable
|
||||
attr_reader :filters
|
||||
attr_reader :resource
|
||||
|
||||
def_delegators :filters, :<<, :push, :unshift, :insert, :shift, :pop, :first, :clear
|
||||
|
||||
def initialize(resource)
|
||||
@resource = resource
|
||||
@filters = []
|
||||
end
|
||||
|
||||
def render(*args)
|
||||
process resource.render *args
|
||||
end
|
||||
|
||||
def process(body)
|
||||
filters.inject(body){ |body, app| app.call(body) }
|
||||
end
|
||||
end
|
||||
end
|
|
@ -109,7 +109,7 @@ module Middleman
|
|||
|
||||
begin
|
||||
# Write out the contents of the page
|
||||
res.write resource.render({}, rack: { request: req })
|
||||
res.write resource.pipeline.render({}, rack: { request: req })
|
||||
|
||||
# Valid content is a 200 status
|
||||
res.status = 200
|
||||
|
|
|
@ -3,6 +3,7 @@ require 'middleman-core/sitemap/extensions/traversal'
|
|||
require 'middleman-core/file_renderer'
|
||||
require 'middleman-core/template_renderer'
|
||||
require 'middleman-core/contracts'
|
||||
require 'middleman-core/pipeline'
|
||||
|
||||
module Middleman
|
||||
# Sitemap namespace
|
||||
|
@ -40,6 +41,8 @@ module Middleman
|
|||
|
||||
attr_accessor :ignored
|
||||
|
||||
attr_reader :pipeline
|
||||
|
||||
# Initialize resource with parent store and URL
|
||||
# @param [Middleman::Sitemap::Store] store
|
||||
# @param [String] path
|
||||
|
@ -50,6 +53,7 @@ module Middleman
|
|||
@app = @store.app
|
||||
@path = path
|
||||
@ignored = false
|
||||
@pipeline = Pipeline.new(self)
|
||||
|
||||
source = Pathname(source) if source && source.is_a?(String)
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue