class LittleWeasel::Services::DictionaryMetadataService
This class provides methods for managing and manipulating the dictionary metadata associated with the given dictionary, (dictionary_key) for the supplied metadata_key.
Attributes
Public Class Methods
This method initializes the dictionary_metadata
object to its initialized state - all data is lost, but the object reference is maintained.
# File lib/LittleWeasel/services/dictionary_metadata_service.rb, line 44 def init(dictionary_metadata:) Modules::DictionaryMetadataValidatable.validate dictionary_metadata: dictionary_metadata dictionary_metadata.each_key { |key| dictionary_metadata.delete(key) } dictionary_metadata end
Returns true if the dictionary metadata is initialized; that is, if it's in the same state the dictionary metadata would be in if init
were called.
# File lib/LittleWeasel/services/dictionary_metadata_service.rb, line 54 def init?(dictionary_metadata:) Modules::DictionaryMetadataValidatable.validate dictionary_metadata: dictionary_metadata initialized_dictionary_metadata = init(dictionary_metadata: {}) dictionary_metadata.eql?(initialized_dictionary_metadata) end
@example metadata Hash structure:
{ <dictionary_id!> => { :<metadata_key> => <metadata_object> }, ... } }
# File lib/LittleWeasel/services/dictionary_metadata_service.rb, line 29 def initialize(dictionary_key:, dictionary_cache:, dictionary_metadata:) validate_dictionary_key dictionary_key: dictionary_key self.dictionary_key = dictionary_key validate_dictionary_cache dictionary_cache: dictionary_cache self.dictionary_cache = dictionary_cache validate_dictionary_metadata dictionary_metadata: dictionary_metadata self.dictionary_metadata = dictionary_metadata end
Public Instance Methods
This method will return true if metadata exists for the dictionary associated with the given dictionary key, for the given metadata key.
# File lib/LittleWeasel/services/dictionary_metadata_service.rb, line 75 def dictionary_metadata?(metadata_key:) dictionary_metadata.dig(dictionary_id, metadata_key)&.present? || false end
# File lib/LittleWeasel/services/dictionary_metadata_service.rb, line 79 def get_dictionary_metadata(metadata_key:) dictionary_metadata.dig(dictionary_id!, metadata_key) end
This method initializes the dictionary metadata for dictionary metadata associated with the dictionary_id
! and metadata_key.
# File lib/LittleWeasel/services/dictionary_metadata_service.rb, line 65 def init(metadata_key:) metadata = dictionary_metadata[dictionary_id!] metadata&.delete(metadata_key) metadata = dictionary_metadata_init_if metadata[metadata_key] = nil self end
# File lib/LittleWeasel/services/dictionary_metadata_service.rb, line 83 def set_dictionary_metadata(value:, metadata_key:) dictionary_metadata[dictionary_id!][metadata_key] = value self end
Private Instance Methods
# File lib/LittleWeasel/services/dictionary_metadata_service.rb, line 105 def dictionary_id dictionary_cache_service.dictionary_id end
# File lib/LittleWeasel/services/dictionary_metadata_service.rb, line 109 def dictionary_id! dictionary_cache_service.dictionary_id! end
This method initializes the metadata for the dictionary_id
! if it is not already initialized. The metadata for the given dictionary_id
! is returned.
# File lib/LittleWeasel/services/dictionary_metadata_service.rb, line 99 def dictionary_metadata_init_if return dictionary_metadata[dictionary_id!] unless dictionary_metadata_init_needed? dictionary_metadata[dictionary_id!] = {} end
# File lib/LittleWeasel/services/dictionary_metadata_service.rb, line 92 def dictionary_metadata_init_needed? dictionary_metadata[dictionary_id!].blank? end