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

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

Constant Summary

Constants inherited from BaseValidator

BaseValidator::INVALID_TYPE, BaseValidator::MISSING_REQUIRED

Instance Method Summary collapse

Methods inherited from BaseValidator

#raw_types, #required?, #valid?

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



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

#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