Sha256: cfb7ef3b763a7920ea8a3c1318b25c8f751a83938570c66fc4ad2ce035f9ecc3

Contents?: true

Size: 1.03 KB

Versions: 12

Compression:

Stored size: 1.03 KB

Contents

require 'awestruct/handler_chains'
require 'awestruct/context_helper'

module Awestruct

  class Pipeline

    attr_reader :handler_chains

    def initialize()
      @handler_chains = HandlerChains.new
      @extensions     = []
      @helpers        = []
      @transformers   = []
    end

    def extension(e)
      @extensions << e
      # TC: why? transformer and extension?
      e.transform(@transformers) if e.respond_to?('transform')
    end

    def helper(h)
      @helpers << h
    end

    def transformer(t)
      @transformers << t
    end

    def execute(site)
      execute_extensions(site)
    end

    def execute_extensions(site)
      @extensions.each do |e|
        e.execute(site)
      end
    end

    def apply_transformers(site, page, rendered)
      @transformers.each do |t|
        rendered = t.transform( site, page, rendered )
      end
      rendered
    end

    def mixin_helpers(context)
      context.extend( Awestruct::ContextHelper )
      @helpers.each do |h|
        context.extend(h)
      end
    end

  end

end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
awestruct-0.5.6.beta8 lib/awestruct/pipeline.rb
awestruct-0.5.6.beta7 lib/awestruct/pipeline.rb
awestruct-0.5.6.beta6 lib/awestruct/pipeline.rb
awestruct-0.5.6.beta5 lib/awestruct/pipeline.rb
awestruct-0.5.6.beta4 lib/awestruct/pipeline.rb
awestruct-0.5.6.beta3 lib/awestruct/pipeline.rb
awestruct-0.5.6.beta2 lib/awestruct/pipeline.rb
awestruct-0.5.6.beta lib/awestruct/pipeline.rb
awestruct-0.5.5 lib/awestruct/pipeline.rb
awestruct-0.5.4.2 lib/awestruct/pipeline.rb
awestruct-0.5.4.1 lib/awestruct/pipeline.rb
awestruct-0.5.4 lib/awestruct/pipeline.rb