Class: SBOM::CycloneDX::Validator::StringValidator

Inherits:
BaseValidator
  • Object
show all
Defined in:
lib/sbom/cyclone_dx/validator/string_validator.rb,
sig/sbom/cyclone_dx/validator/string_validator.rbs

Constant Summary

Constants inherited from BaseValidator

BaseValidator::INVALID_TYPE, BaseValidator::MISSING_REQUIRED

Instance Method Summary collapse

Methods inherited from BaseValidator

#const?, #raw_types, #required?

Constructor Details

#initialize(enum: nil, max_length: nil, min_length: nil, pattern: Pattern::DEFAULT, required: true) ⇒ StringValidator

TODO: Validate max/min_length >= 0 and max_length >= min_length

Parameters:

  • enum: (Array[String], nil) (defaults to: nil)
  • max_length: (Integer, nil) (defaults to: nil)
  • min_length: (Integer, nil) (defaults to: nil)
  • pattern: (Regexp) (defaults to: Pattern::DEFAULT)
  • required: (Boolean) (defaults to: true)


12
13
14
15
16
17
18
# File 'lib/sbom/cyclone_dx/validator/string_validator.rb', line 12

def initialize(enum: nil, max_length: nil, min_length: nil, pattern: Pattern::DEFAULT, required: true)
  super(String, required: required)

  @enum = enum
  @length_range = (min_length..max_length)
  @pattern = pattern
end

Instance Method Details

#valid? ⇒ Boolean

Parameters:

  • (Object)

Returns:

  • (Boolean)


10
# File 'sig/sbom/cyclone_dx/validator/string_validator.rbs', line 10

def valid?: (untyped) -> bool

#validate(value) ⇒ Object



20
21
22
23
24
25
26
27
28
29
# File 'lib/sbom/cyclone_dx/validator/string_validator.rb', line 20

def validate(value)
  rv = super
  return rv unless value.is_a?(String)

  rv << "Value is not within enum" if @enum&.exclude?(value)
  rv << "Value is not within length range" unless @length_range.cover?(value.length)
  rv << "Value does not match pattern" unless Pattern.match_exactly?(@pattern, value)

  rv
end