Module: LittleWeasel::Modules::DictionarySourceable
- Defined in:
- lib/LittleWeasel/modules/dictionary_sourceable.rb
Overview
This module provides methods to manage dictionary sources.
Constant Summary collapse
- MEMORY_SOURCE =
'*'
Constants included from DictionaryCacheKeys
LittleWeasel::Modules::DictionaryCacheKeys::DICTIONARIES, LittleWeasel::Modules::DictionaryCacheKeys::DICTIONARY_CACHE, LittleWeasel::Modules::DictionaryCacheKeys::DICTIONARY_ID, LittleWeasel::Modules::DictionaryCacheKeys::DICTIONARY_OBJECT, LittleWeasel::Modules::DictionaryCacheKeys::DICTIONARY_REFERENCES, LittleWeasel::Modules::DictionaryCacheKeys::SOURCE
Class Method Summary collapse
- .file_source?(dictionary_source) ⇒ Boolean
- .memory_source ⇒ Object
- .memory_source?(dictionary_source) ⇒ Boolean
Instance Method Summary collapse
-
#add_dictionary_source(dictionary_source:) ⇒ Object
Adds a dictionary source.
-
#dictionary_id_associated_with(dictionary_source:) ⇒ Object
private
Returns the dictionary_id for the dictionary_source if it exists in dictionaries; otherwise, returns the new dictionary id that should be used.
- #dictionary_source ⇒ Object (also: #dictionary_file)
- #dictionary_source! ⇒ Object (also: #dictionary_file!)
- #memory_source ⇒ Object private
-
#set_dictionary_source(dictionary_source:) ⇒ Object
private
Sets the dictionary source in the dictionary cache.
Methods included from DictionaryValidatable
#validate_dictionary_source_does_not_exist, validate_dictionary_source_does_not_exist
Methods included from DictionarySourceValidatable
#validate_dictionary_source, validate_dictionary_source
Methods included from DictionaryCacheKeys
#initialize_dictionary_cache, initialize_dictionary_cache, #initialized_dictionary_cache, initialized_dictionary_cache
Class Method Details
.file_source?(dictionary_source) ⇒ Boolean
18 19 20 |
# File 'lib/LittleWeasel/modules/dictionary_sourceable.rb', line 18 def self.file_source?(dictionary_source) !memory_source? dictionary_source end |
.memory_source ⇒ Object
26 27 28 |
# File 'lib/LittleWeasel/modules/dictionary_sourceable.rb', line 26 def memory_source "#{MEMORY_SOURCE}#{SecureRandom.uuid[0..7]}" end |
.memory_source?(dictionary_source) ⇒ Boolean
22 23 24 |
# File 'lib/LittleWeasel/modules/dictionary_sourceable.rb', line 22 def self.memory_source?(dictionary_source) dictionary_source =~ /^#{Regexp.quote(MEMORY_SOURCE)}[0-9a-fA-F]{8}$/ end |
Instance Method Details
#add_dictionary_source(dictionary_source:) ⇒ Object
Adds a dictionary source. A “dictionary source” specifies the source from which the dictionary ultimately obtains its words.
or a memory source indicator to signify that the dictionary was created dynamically from memory.
37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/LittleWeasel/modules/dictionary_sourceable.rb', line 37 def add_dictionary_source(dictionary_source:) validate_dictionary_source_does_not_exist dictionary_cache_service: self set_dictionary_reference \ dictionary_id: dictionary_id_associated_with(dictionary_source: dictionary_source) # Only set the dictionary source if it doesn't already exist because settings # the dictionary source wipes out the #dictionary_object; dictionary objects # can have more than one dictionary reference pointing to them, and we don't # want to blow away the #dictionary_object, metadata, or any other data # associated with it if it already exists. set_dictionary_source(dictionary_source: dictionary_source) unless dictionary? self end |
#dictionary_id_associated_with(dictionary_source:) ⇒ Object (private)
Returns the dictionary_id for the dictionary_source if it exists in dictionaries; otherwise, returns the new dictionary id that should be used.
77 78 79 80 81 82 83 |
# File 'lib/LittleWeasel/modules/dictionary_sourceable.rb', line 77 def dictionary_id_associated_with(dictionary_source:) dictionaries = dictionary_cache.dig(DICTIONARY_CACHE, DICTIONARIES) dictionaries&.each_pair do |dictionary_id, dictionary_hash| return dictionary_id if dictionary_source == dictionary_hash[SOURCE] end SecureRandom.uuid[0..7] end |
#dictionary_source ⇒ Object Also known as: dictionary_file
51 52 53 |
# File 'lib/LittleWeasel/modules/dictionary_sourceable.rb', line 51 def dictionary_source dictionary_cache.dig(DICTIONARY_CACHE, DICTIONARIES, dictionary_id, SOURCE) end |
#dictionary_source! ⇒ Object Also known as: dictionary_file!
56 57 58 59 60 61 |
# File 'lib/LittleWeasel/modules/dictionary_sourceable.rb', line 56 def dictionary_source! raise ArgumentError, "A dictionary source could not be found for key '#{key}'." \ unless dictionary_reference? dictionary_cache[DICTIONARY_CACHE][DICTIONARIES][dictionary_id!][SOURCE] end |
#memory_source ⇒ Object (private)
26 27 28 |
# File 'lib/LittleWeasel/modules/dictionary_sourceable.rb', line 26 def memory_source "#{MEMORY_SOURCE}#{SecureRandom.uuid[0..7]}" end |
#set_dictionary_source(dictionary_source:) ⇒ Object (private)
Sets the dictionary source in the dictionary cache.
67 68 69 70 71 72 |
# File 'lib/LittleWeasel/modules/dictionary_sourceable.rb', line 67 def set_dictionary_source(dictionary_source:) dictionary_cache[DICTIONARY_CACHE][DICTIONARIES][dictionary_id!] = { SOURCE => dictionary_source, DICTIONARY_OBJECT => {} } end |