Sha256: 13d43f37ac1ad18a8c9c185f9282857a3e09f8f38e8709a1fbad1fcb958dd458

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

module Rasti
  class Form
    
    class CastError < StandardError

      attr_reader :type, :value

      def initialize(type, value)
        @type = type
        @value = value
      end

      def message
        "Invalid cast: #{display_value} -> #{type}"
      end

      private

      def display_value
        value.is_a?(::String) ? "'#{value}'" : value.inspect
      end

    end


    class MultiCastError < StandardError

      attr_reader :type, :value, :errors
      
      def initialize(type, value, errors)
        @type = type
        @value = value
        @errors = errors
      end

      def message
        "Invalid cast: #{display_value} -> #{type} - #{JSON.dump(errors)}"
      end

      def display_value
        value.is_a?(::String) ? "'#{value}'" : value.inspect
      end

    end

    class ValidationError < StandardError

      attr_reader :scope, :errors
      
      def initialize(scope, errors)
        @scope = scope
        @errors = errors
      end

      def message
        lines = ['Validation errors:']

        errors.each do |key, value|
          lines << "- #{key}: #{value}"
        end

        lines << scope.inspect

        lines.join("\n")
      end

    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rasti-form-3.1.1 lib/rasti/form/errors.rb