module Metaractor

Special thanks to the ‘hashie` and `active_attr` gems for code and inspiration.

Constants

VERSION

Public Class Methods

clear_types!() click to toggle source
# File lib/metaractor.rb, line 90
def self.clear_types!
  @types = {}
end
configure() { |self| ... } click to toggle source
# File lib/metaractor.rb, line 32
def self.configure
  yield self
end
default_hash_formatter() click to toggle source
# File lib/metaractor.rb, line 70
def self.default_hash_formatter
  ->(hash) { hash.inspect }
end
default_modules() click to toggle source
# File lib/metaractor.rb, line 44
def self.default_modules
  [
    {module: Metaractor::HandleErrors, method: :include},
    {module: Metaractor::Parameters, method: :include},
    {module: Metaractor::RunWithContext, method: :include},
    {module: Metaractor::ChainFailures, method: :include},
    {module: Metaractor::Namespace, method: :include}
  ]
end
format_hash(hash) click to toggle source
# File lib/metaractor.rb, line 62
def self.format_hash(hash)
  if @hash_formatter.nil?
    @hash_formatter = default_hash_formatter
  end

  @hash_formatter.call(hash)
end
hash_formatter() click to toggle source
# File lib/metaractor.rb, line 74
def self.hash_formatter
  @hash_formatter
end
hash_formatter=(callable) click to toggle source
# File lib/metaractor.rb, line 78
def self.hash_formatter=(callable)
  @hash_formatter = callable
end
include_module(mod) click to toggle source
# File lib/metaractor.rb, line 54
def self.include_module(mod)
  modules << {module: mod, method: :include}
end
included(base) click to toggle source
# File lib/metaractor.rb, line 18
def self.included(base)
  base.class_eval do
    include Interactor
    Metaractor.modules.each do |hsh|
      case hsh[:method]
      when :include
        include hsh[:module]
      when :prepend
        prepend hsh[:module]
      end
    end
  end
end
modules() click to toggle source
# File lib/metaractor.rb, line 36
def self.modules
  @modules ||= default_modules
end
modules=(mods) click to toggle source
# File lib/metaractor.rb, line 40
def self.modules=(mods)
  @modules = mods
end
prepend_module(mod) click to toggle source
# File lib/metaractor.rb, line 58
def self.prepend_module(mod)
  modules << {module: mod, method: :prepend}
end
register_type(type, callable) click to toggle source
# File lib/metaractor.rb, line 86
def self.register_type(type, callable)
  types[type] = callable
end
types() click to toggle source
# File lib/metaractor.rb, line 82
def self.types
  @types ||= {}
end