Sha256: 063348763096d28f09df98f7c622efd16208ff2001a73788956d26da706bbfbc

Contents?: true

Size: 1.14 KB

Versions: 27

Compression:

Stored size: 1.14 KB

Contents

module Foobara
  module BuiltinTypes
    module Array
      module SupportedProcessors
        class ElementTypeDeclaration < TypeDeclarations::ElementProcessor
          def element_type
            @element_type ||= type_for_declaration(element_type_declaration)
          end

          def process_value(array)
            errors = []

            array.each.with_index do |element, index|
              element_outcome = element_type.process_value(element)

              if element_outcome.success?
                array[index] = element_outcome.result
              else
                element_outcome.each_error do |error|
                  error.prepend_path!(index)

                  errors << error
                end
              end
            end

            Outcome.new(result: array, errors:)
          end

          def possible_errors
            super + element_type.possible_errors.map do |possible_error|
                      possible_error = possible_error.dup
                      possible_error.prepend_path!(:"#")
                      possible_error
                    end
          end
        end
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
foobara-0.0.7 projects/builtin_types/src/array/supported_processors/element_type_declaration.rb
foobara-0.0.6 projects/builtin_types/src/array/supported_processors/element_type_declaration.rb
foobara-0.0.5 projects/builtin_types/src/array/supported_processors/element_type_declaration.rb
foobara-0.0.4 projects/builtin_types/src/array/supported_processors/element_type_declaration.rb
foobara-0.0.3 projects/builtin_types/src/array/supported_processors/element_type_declaration.rb
foobara-0.0.2 projects/builtin_types/src/array/supported_processors/element_type_declaration.rb
foobara-0.0.1 projects/builtin_types/src/array/supported_processors/element_type_declaration.rb