Sha256: 7c1174905bc84ceb7019005b6da1765d24d640ecf74f4a70c7867df226407a47

Contents?: true

Size: 584 Bytes

Versions: 23

Compression:

Stored size: 584 Bytes

Contents

# frozen_string_literal: true

module Salestation
  class Web < Module
    class InputValidator
      include Deterministic::Prelude

      def self.[](**validations)
        new(validations)
      end

      def initialize(**validations)
        @validations = validations
      end

      def call(input)
        @validations.reduce(Deterministic::Result::Success({})) do |result, (key, validation)|
          result.map do
            validation.call(input.fetch(key, nil))
          end
        end.map(->(_) { Deterministic::Result::Success(input) })
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
salestation-4.4.1 lib/salestation/web/input_validator.rb
salestation-4.4.0 lib/salestation/web/input_validator.rb
salestation-4.3.1 lib/salestation/web/input_validator.rb
salestation-4.3.0 lib/salestation/web/input_validator.rb
salestation-4.2.0 lib/salestation/web/input_validator.rb
salestation-4.1.0 lib/salestation/web/input_validator.rb
salestation-4.0.3 lib/salestation/web/input_validator.rb
salestation-4.0.2 lib/salestation/web/input_validator.rb
salestation-4.0.1 lib/salestation/web/input_validator.rb
salestation-4.0.0 lib/salestation/web/input_validator.rb
salestation-3.9.0 lib/salestation/web/input_validator.rb
salestation-3.8.1 lib/salestation/web/input_validator.rb
salestation-3.8.0 lib/salestation/web/input_validator.rb
salestation-3.7.0 lib/salestation/web/input_validator.rb
salestation-3.6.0 lib/salestation/web/input_validator.rb
salestation-3.5.1 lib/salestation/web/input_validator.rb
salestation-3.5.0 lib/salestation/web/input_validator.rb
salestation-3.4.0 lib/salestation/web/input_validator.rb
salestation-3.3.0 lib/salestation/web/input_validator.rb
salestation-3.2.2 lib/salestation/web/input_validator.rb