module Metaractor::Parameters::ClassMethods

Public Instance Methods

optional(*params, **options) click to toggle source
# File lib/metaractor/parameters.rb, line 100
def optional(*params, **options)
  parameters(*params, **options)
end
parameter(name, **options) click to toggle source
# File lib/metaractor/parameters.rb, line 66
def parameter(name, **options)
  if param = self.parameter_hash[name.to_sym]
    param.merge!(**options)
  else
    Parameter.new(name, **options).tap do |parameter|
      self.parameter_hash[parameter.name] = parameter
    end
  end
end
parameter_hash() click to toggle source
# File lib/metaractor/parameters.rb, line 82
def parameter_hash
  @parameters ||= {}
end
parameters(*names, **options) click to toggle source
# File lib/metaractor/parameters.rb, line 76
def parameters(*names, **options)
  names.each do |name|
    parameter(name, **options)
  end
end
parameters_in_tree(tree) click to toggle source
# File lib/metaractor/parameters.rb, line 113
def parameters_in_tree(tree)
  if tree.respond_to?(:to_h)
    tree.to_h.values.first.to_a.flat_map {|t| parameters_in_tree(t)}
  else
    [tree]
  end
end
required(*params, **options) click to toggle source
# File lib/metaractor/parameters.rb, line 90
def required(*params, **options)
  if params.empty?
    tree = options
    self.requirement_trees << tree
    parameters(*parameters_in_tree(tree), required: tree)
  else
    parameters(*params, required: true, **options)
  end
end
requirement_trees() click to toggle source
# File lib/metaractor/parameters.rb, line 86
def requirement_trees
  @requirement_trees ||= []
end
validate_hooks() click to toggle source
# File lib/metaractor/parameters.rb, line 109
def validate_hooks
  @validate_hooks ||= []
end
validate_parameters(*hooks, &block) click to toggle source
# File lib/metaractor/parameters.rb, line 104
def validate_parameters(*hooks, &block)
  hooks << block if block
  hooks.each {|hook| validate_hooks.push(hook) }
end