Sha256: 82f7908dd3d8da2598e2e174e8658751cc9f2bac6dfa69df377a85cde1b469f8
Contents?: true
Size: 1.14 KB
Versions: 3
Compression:
Stored size: 1.14 KB
Contents
# frozen_string_literal: true module Nocode module Util class Dictionary extend Forwardable NEWLINE_CHAR = "\n" class << self def ensure(value) if value.is_a?(self) value else new(value) end end end attr_reader :values def_delegators :values, :empty? def initialize(values = {}) @values = {} (values || {}).each { |k, v| assign(k, v) } freeze end def delete(key) tap { values.delete(keyify(key)) } end def []=(key, value) tap { values[keyify(key)] = value } end def [](key) values[keyify(key)] end def dig(*keys) top_level = keyify(keys.first) keys = [top_level] + keys[1..] values.dig(*keys) end def key?(key) values.key?(keyify(key)) end def to_s values.map { |k, v| "#{k}: #{v}" }.join(NEWLINE_CHAR) end private def assign(key, value) values[keyify(key)] = value end def keyify(value) value.to_s end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
nocode-0.0.3 | lib/nocode/util/dictionary.rb |
nocode-0.0.2 | lib/nocode/util/dictionary.rb |
nocode-0.0.1 | lib/nocode/util/dictionary.rb |