Class: Ci::Inputs::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/ci/inputs/builder.rb

Constant Summary collapse

TYPES =
[
  ArrayInput,
  BooleanInput,
  NumberInput,
  StringInput
].freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(specs) ⇒ Builder

Returns a new instance of Builder.

Parameters:

  • specs (Hash)

    A hash containing inputs specifications from spec:inputs config header



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_typesObject



13
14
15
# File 'lib/ci/inputs/builder.rb', line 13

def self.input_types
  TYPES.map(&:type_name)
end

Instance Method Details

#all_inputsObject



27
28
29
# File 'lib/ci/inputs/builder.rb', line 27

def all_inputs
  @inputs
end

#errorsObject



35
36
37
# File 'lib/ci/inputs/builder.rb', line 35

def errors
  @errors + all_inputs.flat_map(&:errors)
end

#input_namesObject



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