Class: Ci::Inputs::Builder
- Inherits:
-
Object
- Object
- Ci::Inputs::Builder
- Defined in:
- lib/ci/inputs/builder.rb
Constant Summary collapse
- TYPES =
[ ArrayInput, BooleanInput, NumberInput, StringInput ].freeze
Class Method Summary collapse
Instance Method Summary collapse
- #all_inputs ⇒ Object
- #errors ⇒ Object
-
#initialize(specs) ⇒ Builder
constructor
A new instance of Builder.
- #input_names ⇒ Object
- #to_params(params) ⇒ Object
- #validate_input_params!(params) ⇒ Object
Constructor Details
#initialize(specs) ⇒ Builder
Returns a new instance of Builder.
18 19 20 21 22 23 24 25 |
# File 'lib/ci/inputs/builder.rb', line 18 def initialize(specs) @inputs = [] @errors = [] return unless valid_specs?(specs) build_inputs!(specs.to_h) end |
Class Method Details
.input_types ⇒ Object
13 14 15 |
# File 'lib/ci/inputs/builder.rb', line 13 def self.input_types TYPES.map(&:type_name) end |
Instance Method Details
#all_inputs ⇒ Object
27 28 29 |
# File 'lib/ci/inputs/builder.rb', line 27 def all_inputs @inputs end |
#errors ⇒ Object
35 36 37 |
# File 'lib/ci/inputs/builder.rb', line 35 def errors @errors + all_inputs.flat_map(&:errors) end |
#input_names ⇒ Object
31 32 33 |
# File 'lib/ci/inputs/builder.rb', line 31 def input_names all_inputs.map(&:name) end |
#to_params(params) ⇒ Object
47 48 49 50 51 52 |
# File 'lib/ci/inputs/builder.rb', line 47 def to_params(params) all_inputs.each_with_object({}) do |input, resolved_inputs| context = params.merge(resolved_inputs) resolved_inputs[input.name] = input.actual_value(params[input.name], context) end end |
#validate_input_params!(params) ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/ci/inputs/builder.rb', line 39 def validate_input_params!(params) all_inputs.each_with_object({}) do |input, resolved_inputs| context = params.merge(resolved_inputs) input.validate_param!(params[input.name], context) resolved_inputs[input.name] = input.actual_value(params[input.name], context) end end |