Module: Metaractor::Parameters::ClassMethods
- Defined in:
- lib/metaractor/parameters.rb
Instance Method Summary collapse
- #optional(*params, **options) ⇒ Object
- #parameter(name, **options) ⇒ Object
- #parameter_hash ⇒ Object
- #parameters(*names, **options) ⇒ Object
- #parameters_in_tree(tree) ⇒ Object
- #required(*params, **options) ⇒ Object
- #requirement_trees ⇒ Object
- #validate_hooks ⇒ Object
- #validate_parameters(*hooks, &block) ⇒ Object
Instance Method Details
#optional(*params, **options) ⇒ Object
100 101 102 |
# File 'lib/metaractor/parameters.rb', line 100 def optional(*params, **) parameters(*params, **) end |
#parameter(name, **options) ⇒ Object
66 67 68 69 70 71 72 73 74 |
# File 'lib/metaractor/parameters.rb', line 66 def parameter(name, **) if param = self.parameter_hash[name.to_sym] param.merge!(**) else Parameter.new(name, **).tap do |parameter| self.parameter_hash[parameter.name] = parameter end end end |
#parameter_hash ⇒ Object
82 83 84 |
# File 'lib/metaractor/parameters.rb', line 82 def parameter_hash @parameters ||= {} end |
#parameters(*names, **options) ⇒ Object
76 77 78 79 80 |
# File 'lib/metaractor/parameters.rb', line 76 def parameters(*names, **) names.each do |name| parameter(name, **) end end |
#parameters_in_tree(tree) ⇒ Object
113 114 115 116 117 118 119 |
# 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) ⇒ Object
90 91 92 93 94 95 96 97 98 |
# File 'lib/metaractor/parameters.rb', line 90 def required(*params, **) if params.empty? tree = self.requirement_trees << tree parameters(*parameters_in_tree(tree), required: tree) else parameters(*params, required: true, **) end end |
#requirement_trees ⇒ Object
86 87 88 |
# File 'lib/metaractor/parameters.rb', line 86 def requirement_trees @requirement_trees ||= [] end |
#validate_hooks ⇒ Object
109 110 111 |
# File 'lib/metaractor/parameters.rb', line 109 def validate_hooks @validate_hooks ||= [] end |
#validate_parameters(*hooks, &block) ⇒ Object
104 105 106 107 |
# File 'lib/metaractor/parameters.rb', line 104 def validate_parameters(*hooks, &block) hooks << block if block hooks.each {|hook| validate_hooks.push(hook) } end |