module Metaractor::Parameters::ClassMethods
Public Instance Methods
optional(*params, **options)
click to toggle source
# File lib/metaractor/parameters.rb, line 101 def optional(*params, **options) parameters(*params, **options) end
parameter(name, **options)
click to toggle source
# File lib/metaractor/parameters.rb, line 67 def parameter(name, **options) if (param = parameter_hash[name.to_sym]) param.merge!(**options) else Parameter.new(name, **options).tap do |parameter| parameter_hash[parameter.name] = parameter end end end
parameter_hash()
click to toggle source
# File lib/metaractor/parameters.rb, line 83 def parameter_hash @parameters ||= {} end
parameters(*names, **options)
click to toggle source
# File lib/metaractor/parameters.rb, line 77 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 114 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 91 def required(*params, **options) if params.empty? tree = options 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 87 def requirement_trees @requirement_trees ||= [] end
validate_hooks()
click to toggle source
# File lib/metaractor/parameters.rb, line 110 def validate_hooks @validate_hooks ||= [] end
validate_parameters(*hooks, &block)
click to toggle source
# File lib/metaractor/parameters.rb, line 105 def validate_parameters(*hooks, &block) hooks << block if block hooks.each { |hook| validate_hooks.push(hook) } end