Sha256: 8b132bd7178fc7c029a50efb1e89bfe5de65d19565cbb2a5809390c5b1dad8cd

Contents?: true

Size: 621 Bytes

Versions: 1

Compression:

Stored size: 621 Bytes

Contents

module A9n
  class Struct
    extend Forwardable

    attr_reader :data

    def_delegators :data, :empty?, :keys, :key?, :fetch, :[], :[]=

    def initialize(data = {})
      @data = data
    end

    alias to_hash data
    alias to_h data

    def merge(another_data)
      data.merge!(another_data)
    end

    def find(key)
      if data.key?(key)
        fetch(key)
      else
        raise KeyNotFoundError.new, "Could not find #{key} in #{data.keys.inspect}"
      end
    end

    def method_missing(key, *_args)
      find(key)
    end

    def set(key, value)
      data[key.to_sym] = value
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
a9n-1.2.0 lib/a9n/struct.rb