Sha256: a6b7364af1f285cd82a23cf01623418c5965ae1d1ce42fe9aec4891b23c9e66a

Contents?: true

Size: 1.05 KB

Versions: 36

Compression:

Stored size: 1.05 KB

Contents

module Schemacop
  module V2
    class StringValidator < Node
      register symbols: :string, klasses: String

      option :min
      option :max

      def initialize(options = {})
        super(options)

        validate_options!
      end

      def validate(data, collector)
        super

        if option?(:min) && data.size < option(:min)
          collector.error "String must be longer (>=) than #{option(:min)} characters."
        end
        if option?(:max) && data.size > option(:max)
          collector.error "String must be shorter (<=) than #{option(:max)} characters."
        end
      end

      protected

      def validate_options!
        option_schema = Schema.new :integer, min: 0

        if option?(:min) && option_schema.invalid?(option(:min))
          fail Exceptions::InvalidSchemaError, 'String option :min must be an integer >= 0.'
        elsif option?(:max) && option_schema.invalid?(option(:max))
          fail Exceptions::InvalidSchemaError, 'String option :max must be an integer >= 0.'
        end
      end
    end
  end
end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
schemacop-3.0.29 lib/schemacop/v2/validator/string_validator.rb
schemacop-3.0.28 lib/schemacop/v2/validator/string_validator.rb
schemacop-3.0.27 lib/schemacop/v2/validator/string_validator.rb
schemacop-3.0.26 lib/schemacop/v2/validator/string_validator.rb
schemacop-3.0.25 lib/schemacop/v2/validator/string_validator.rb
schemacop-3.0.24 lib/schemacop/v2/validator/string_validator.rb
schemacop-3.0.23 lib/schemacop/v2/validator/string_validator.rb
schemacop-3.0.22 lib/schemacop/v2/validator/string_validator.rb
schemacop-3.0.21 lib/schemacop/v2/validator/string_validator.rb
schemacop-3.0.20 lib/schemacop/v2/validator/string_validator.rb
schemacop-3.0.19 lib/schemacop/v2/validator/string_validator.rb
schemacop-3.0.18 lib/schemacop/v2/validator/string_validator.rb
schemacop-3.0.17 lib/schemacop/v2/validator/string_validator.rb
schemacop-3.0.16 lib/schemacop/v2/validator/string_validator.rb
schemacop-3.0.15 lib/schemacop/v2/validator/string_validator.rb
schemacop-3.0.14 lib/schemacop/v2/validator/string_validator.rb
schemacop-3.0.13 lib/schemacop/v2/validator/string_validator.rb
schemacop-3.0.12 lib/schemacop/v2/validator/string_validator.rb
schemacop-3.0.11 lib/schemacop/v2/validator/string_validator.rb
schemacop-3.0.10 lib/schemacop/v2/validator/string_validator.rb