Class: Discorb::Dictionary
- Inherits:
-
Object
- Object
- Discorb::Dictionary
- Defined in:
- lib/discorb/dictionary.rb
Instance Attribute Summary collapse
-
#limit -> Integer
The maximum number of items in the dictionary.
Instance Method Summary collapse
-
#get(index) -> Object?
(also: #[])
Get an item from the dictionary.
-
#has?(id) -> Boolean
Checks if the dictionary has an ID.
-
#initialize(hash = {}, limit: nil, sort: false) -> Dictionary
constructor
Initialize a new Dictionary.
- #inspect -> Object
-
#merge(other) -> Object
Merges another dictionary into this one.
- #method_missing(name) -> Object
-
#register(id, body) -> self
(also: #[]=)
Registers a new item in the dictionary.
-
#remove(id) -> Object
Removes an item from the dictionary.
- #respond_to_missing?(name, args, kwargs) -> Boolean
-
#values -> Array
Returns the values of the dictionary.
Constructor Details
#initialize(hash = {}, limit: nil, sort: false) -> Dictionary
Initialize a new Dictionary.
15 16 17 18 19 |
# File 'lib/discorb/dictionary.rb', line 15 def initialize(hash = {}, limit: nil, sort: false) @cache = hash.transform_keys(&:to_s) @limit = limit @sort = sort end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name) -> Object
96 97 98 99 100 101 102 |
# File 'lib/discorb/dictionary.rb', line 96 def method_missing(name, ...) if values.respond_to?(name) values.send(name, ...) else super end end |
Instance Attribute Details
#limit -> Integer
Returns The maximum number of items in the dictionary.
6 7 8 |
# File 'lib/discorb/dictionary.rb', line 6 def limit @limit end |
Instance Method Details
#get(index) -> Object? Also known as: []
Get an item from the dictionary.
67 68 69 70 71 72 73 74 |
# File 'lib/discorb/dictionary.rb', line 67 def get(id) res = @cache[id.to_s] if res.nil? && id.is_a?(Integer) && id < @cache.length @cache.values[id] else res end end |
#has?(id) -> Boolean
Checks if the dictionary has an ID.
92 93 94 |
# File 'lib/discorb/dictionary.rb', line 92 def has?(id) !self[id].nil? end |
#inspect -> Object
115 116 117 |
# File 'lib/discorb/dictionary.rb', line 115 def inspect "#<#{self.class} #{values.length} items>" end |
#merge(other) -> Object
Merges another dictionary into this one.
41 42 43 |
# File 'lib/discorb/dictionary.rb', line 41 def merge(other) @cache.merge!(other) end |
#register(id, body) -> self Also known as: []=
Registers a new item in the dictionary.
29 30 31 32 33 34 |
# File 'lib/discorb/dictionary.rb', line 29 def register(id, body) @cache[id.to_s] = body @cache = @cache.sort_by(&@sort).to_h if @sort @cache.remove(@cache.values[-1]) if !@limit.nil? && @cache.size > @limit body end |
#remove(id) -> Object
Removes an item from the dictionary.
50 51 52 |
# File 'lib/discorb/dictionary.rb', line 50 def remove(id) @cache.remove(id.to_s) end |
#respond_to_missing?(name, args, kwargs) -> Boolean
104 105 106 107 108 109 110 |
# File 'lib/discorb/dictionary.rb', line 104 def respond_to_missing?(name, args, kwargs) if values.respond_to?(name) true else super end end |
#values -> Array
Returns the values of the dictionary.
81 82 83 |
# File 'lib/discorb/dictionary.rb', line 81 def values @cache.values end |