Sha256: 0e5d19f22469b1cc8bc0391006606e275b3db1653b092f12828525e232153ef7

Contents?: true

Size: 893 Bytes

Versions: 13

Compression:

Stored size: 893 Bytes

Contents

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(validator: self)
      end

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

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
ledger_sync-1.3.5 lib/ledger_sync/util/validator.rb
ledger_sync-1.3.4 lib/ledger_sync/util/validator.rb
ledger_sync-1.3.3 lib/ledger_sync/util/validator.rb
ledger_sync-1.3.2 lib/ledger_sync/util/validator.rb
ledger_sync-1.3.1 lib/ledger_sync/util/validator.rb
ledger_sync-1.1.3 lib/ledger_sync/util/validator.rb
ledger_sync-1.1.2 lib/ledger_sync/util/validator.rb
ledger_sync-1.1.1 lib/ledger_sync/util/validator.rb
ledger_sync-1.0.10 lib/ledger_sync/util/validator.rb
ledger_sync-1.0.9 lib/ledger_sync/util/validator.rb
ledger_sync-1.0.3 lib/ledger_sync/util/validator.rb
ledger_sync-1.0.2 lib/ledger_sync/util/validator.rb
ledger_sync-1.0.0 lib/ledger_sync/util/validator.rb