class Nocode::Util::Dictionary

A hash-like object which ensures all keys are strings.

Constants

NEWLINE_CHAR

Attributes

values[R]

Public Class Methods

ensure(value) click to toggle source
# File lib/nocode/util/dictionary.rb, line 12
def ensure(value)
  if value.is_a?(self)
    value
  else
    new(value)
  end
end
new(values = {}) click to toggle source
# File lib/nocode/util/dictionary.rb, line 25
def initialize(values = {})
  @values = {}

  (values || {}).each { |k, v| assign(k, v) }

  freeze
end

Public Instance Methods

[](key) click to toggle source
# File lib/nocode/util/dictionary.rb, line 41
def [](key)
  values[keyify(key)]
end
[]=(key, value) click to toggle source
# File lib/nocode/util/dictionary.rb, line 37
def []=(key, value)
  tap { values[keyify(key)] = value }
end
delete(key) click to toggle source
# File lib/nocode/util/dictionary.rb, line 33
def delete(key)
  tap { values.delete(keyify(key)) }
end
dig(*keys) click to toggle source
# File lib/nocode/util/dictionary.rb, line 45
def dig(*keys)
  top_level = keyify(keys.first)
  keys = [top_level] + keys[1..]

  values.dig(*keys)
end
key?(key) click to toggle source
# File lib/nocode/util/dictionary.rb, line 52
def key?(key)
  values.key?(keyify(key))
end
to_s() click to toggle source
# File lib/nocode/util/dictionary.rb, line 56
def to_s
  values.map { |k, v| "#{k}: #{v}" }.join(NEWLINE_CHAR)
end

Private Instance Methods

assign(key, value) click to toggle source
# File lib/nocode/util/dictionary.rb, line 62
def assign(key, value)
  values[keyify(key)] = value
end
keyify(value) click to toggle source
# File lib/nocode/util/dictionary.rb, line 66
def keyify(value)
  value.to_s
end