class Moonshine::Filter

Attributes

name[RW]
options[RW]
params[RW]

Public Class Methods

new(name, **options, &block) click to toggle source
# File lib/moonshine/filter.rb, line 6
def initialize(name, **options, &block)
  @name = name
  options[:call] ||= block || name
  @options = options
end

Public Instance Methods

execute(subject) click to toggle source
# File lib/moonshine/filter.rb, line 12
def execute(subject)
  return subject unless to_execute?
  if options[:as_boolean]
    subject.send(options[:call])
  else
    if options[:call].is_a? Proc
      options[:call].call(subject, args)
    else
      subject.send(options[:call], args)
    end
  end
end
to_execute?() click to toggle source
# File lib/moonshine/filter.rb, line 25
def to_execute?
  !!default
end

Private Instance Methods

args() click to toggle source
# File lib/moonshine/filter.rb, line 31
def args
  transform(default)
end
default() click to toggle source
# File lib/moonshine/filter.rb, line 35
def default
  params[name] || options[:default]
end
transform(params) click to toggle source
# File lib/moonshine/filter.rb, line 39
def transform(params)
  return params unless options[:transform]
  options[:transform_class].send(options[:transform], params)
end