class Moonshine::Base

Attributes

chain[R]
params[RW]
subject[RW]

Public Class Methods

new(params, subject = nil) click to toggle source
# File lib/moonshine/base.rb, line 8
def initialize(params, subject = nil)
  @subject = subject || self.class.default_subject.call
  @params = params
  @chain = []
  if self.class.default_chain
    self.class.default_chain.each do |params|
      add_filter_to_chain(params[:name], params[:options], &params[:block])
    end
  end
end

Public Instance Methods

add_filter_to_chain(name, **options, &block) click to toggle source
# File lib/moonshine/base.rb, line 19
def add_filter_to_chain(name, **options, &block)
  @chain << Moonshine::Filter.new(name, options, &block)
end
run() click to toggle source
# File lib/moonshine/base.rb, line 23
def run
  chain.inject(subject) do |subject, filter|
    filter.params = params
    subject = filter.execute(subject)
  end
end