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