Class: Vault::Pipeline

Inherits:
Object
  • Object
show all
Defined in:
lib/vault-tools/pipeline.rb

Overview

Pipes and Filters implementations

Individual filters do work with ::call(object)

Compose a Pipeline with the ::use method

Example:

Pricer = Class.new(Pipeline)

class AppTierPricer < Pricer use PlanScoper, Quantizer, AppGrouper use UserGrouper end

Direct Known Subclasses

Tools::TextEnc::Read, Tools::TextEnc::Write

Class Method Summary collapse

Class Method Details

.filtersObject



22
23
24
# File 'lib/vault-tools/pipeline.rb', line 22

def self.filters
  @filters ||= nil
end

.process(thing) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/vault-tools/pipeline.rb', line 26

def self.process(thing)
  return thing unless filters
  filters.each do |filter|
    thing = filter.call(thing)
    yield thing, filter if block_given?
  end
  thing
end

.use(*args) ⇒ Object



17
18
19
20
# File 'lib/vault-tools/pipeline.rb', line 17

def self.use(*args)
  @filters ||= []
  @filters.push(*args)
end