Class: Cocina::Models::Validators::DescriptionSubjectTemporalEncodingVisitorValidator

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

Overview

Validates encoding.code for subject entries with type “time” against temporal_subject_encoding_codes.yml (union of LOC date-time and temporal source lists).

Instance Method Summary collapse

Methods inherited from BaseDescriptionVisitorValidator

#path_to_s, #visit_array, #visit_obj

Instance Method Details

#validate!Object

Raises:



9
10
11
12
13
# File 'lib/cocina/models/validators/description_subject_temporal_encoding_visitor_validator.rb', line 9

def validate!
  return if error_paths.empty?

  raise ValidationError, "Unrecognized subject temporal encoding codes in description: #{error_paths.join(', ')}"
end

#visit_hash(hash:, path:) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/cocina/models/validators/description_subject_temporal_encoding_visitor_validator.rb', line 15

def visit_hash(hash:, path:)
  return unless in_subject_path?(path)
  return unless hash[:type].to_s == 'time'

  encoding_code = hash.dig(:encoding, :code)
  return unless encoding_code

  error_paths << "#{path_to_s(path)}.encoding.code (#{encoding_code})" unless valid_codes.include?(encoding_code.downcase)
end