Class: Plumbing::Pipeline

Inherits:
Object show all
Defined in:
lib/plumbing/pipeline.rb,
lib/plumbing/pipeline/base.rb,
lib/plumbing/pipeline/only.rb,
lib/plumbing/pipeline/except.rb,
lib/plumbing/pipeline/filter.rb,
lib/plumbing/pipeline/source.rb,
lib/plumbing/pipeline/junction.rb

Overview

Namespace + event registry for the composable event pipeline. Concrete pipelines are Pipeline::Source / Only / Except / Filter / Junction; they all emit immutable Plumbing::Event values to registered observers.

Defined Under Namespace

Classes: Base, Except, Filter, Junction, Only, Source

Class Method Summary collapse

Class Method Details

.event_type(name) ⇒ Object



21
# File 'lib/plumbing/pipeline.rb', line 21

def event_type(name) = @event_types.fetch(name)

.register(klass) ⇒ Object

Register an event class so #notify can build it from its type name (and so deserialisation has a known, allow-listed set of types).

Raises:

  • (ArgumentError)


15
16
17
18
19
# File 'lib/plumbing/pipeline.rb', line 15

def register(klass)
  raise ArgumentError, "#{klass} is not a Plumbing::Event" unless klass.is_a?(Class) && klass < Plumbing::Event
  @event_types[klass.name] = klass
  klass
end

.registered_event_typesObject



23
# File 'lib/plumbing/pipeline.rb', line 23

def registered_event_types = @event_types.keys