Sha256: 69303f226e962a3d259930f250c5dffdb8f4dee810dafba4e3980bcca5f01845

Contents?: true

Size: 903 Bytes

Versions: 8

Compression:

Stored size: 903 Bytes

Contents

# frozen_string_literal: true

module LedgerSync
  module Util
    class Validator
      attr_reader :data,
                  :contract

      def initialize(contract:, data:)
        @data = data
        @contract = contract
      end

      def errors
        @errors ||= call_contract.errors
      end

      def full_messages
        @full_messages ||= errors.messages.map { |e| "#{e.path.map(&:to_s).join(' ')} #{e.text}" }
      end

      def message
        @message ||= full_messages.first
      end

      def valid?
        call_contract.success?
      end

      def validate
        return success if valid?

        failure
      end

      private

      def call_contract
        @call_contract ||= contract.new.call(data)
      end

      def failure
        ValidationResult.Failure(self)
      end

      def success
        ValidationResult.Success(self)
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
ledger_sync-3.0.0 lib/ledger_sync/util/validator.rb
ledger_sync-2.6.0 lib/ledger_sync/util/validator.rb
ledger_sync-2.5.0 lib/ledger_sync/util/validator.rb
ledger_sync-2.4.4 lib/ledger_sync/util/validator.rb
ledger_sync-2.3.1 lib/ledger_sync/util/validator.rb
ledger_sync-2.2.3 lib/ledger_sync/util/validator.rb
ledger_sync-2.2.1 lib/ledger_sync/util/validator.rb
ledger_sync-2.2.0 lib/ledger_sync/util/validator.rb