Class: Cocina::Models::Validators::DescriptionLanguageUriVisitorValidator

Inherits:
BaseDescriptionVisitorValidator show all
Defined in:
lib/cocina/models/validators/description_language_uri_visitor_validator.rb

Overview

Validates language.uri and valueLanguage.uri against LC ISO 639-2, LC MARC languages, and 5 approved ISO 639-3 URIs. Both http and https are acceptable.

Constant Summary collapse

ISO639_3_CODES =
%w[ase dnt quc skr trw tta].freeze

Instance Method Summary collapse

Methods inherited from BaseDescriptionVisitorValidator

#path_to_s, #visit_array, #visit_obj

Instance Method Details

#validate!Object

Raises:



20
21
22
23
24
# File 'lib/cocina/models/validators/description_language_uri_visitor_validator.rb', line 20

def validate!
  return if error_paths.empty?

  raise ValidationError, "Invalid language URIs in description: #{error_paths.join(', ')}"
end

#visit_hash(hash:, path:) ⇒ Object



11
12
13
14
15
16
17
18
# File 'lib/cocina/models/validators/description_language_uri_visitor_validator.rb', line 11

def visit_hash(hash:, path:)
  return unless language_or_value_language_path?(path)

  uri = hash[:uri]
  return unless uri

  error_paths << "#{path_to_s(path)}.uri (#{uri})" unless valid_uri?(uri)
end