Sha256: bc7127f5b5d18619820602f096b579dfb1a6ee46c8b038802f0a87de580619e7

Contents?: true

Size: 903 Bytes

Versions: 8

Compression:

Stored size: 903 Bytes

Contents

# frozen_string_literal: true

module Meta
  module JsonSchema
    class ValidationErrors < StandardError
      attr_reader :errors

      def initialize(errors, message = nil)
        raise ArgumentError, '参数 errors 应传递一个 Hash' unless errors.is_a?(Hash)

        super(message)
        @errors = errors
      end

      def prepend_root(root)
        errors_prepend_root = errors.transform_keys do |name|
          return name.to_s if root.empty?

          path = name[0] == '[' ? "#{root}#{name}" : "#{root}.#{name}"
          path = path[1..] if path[0] == '.'
          path = path[0..-2] if path[-1] == '.'
          path
        end
        ValidationErrors.new(errors_prepend_root)
      end
    end

    class ValidationError < ValidationErrors
      def initialize(message)
        super('' => message)
      end

      def message
        errors['']
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
meta-api-0.0.8 lib/meta/json_schema/support/errors.rb
meta-api-0.0.7 lib/meta/json_schema/support/errors.rb
meta-api-0.0.6 lib/meta/json_schema/support/errors.rb
meta-api-0.0.5 lib/meta/json_schema/support/errors.rb
meta-api-0.0.4 lib/meta/json_schema/support/errors.rb
meta-api-0.0.3 lib/meta/json_schema/support/errors.rb
meta-api-0.0.2 lib/meta/json_schema/support/errors.rb
meta-api-0.0.1 lib/meta/json_schema/support/errors.rb