Sha256: 520a2c4fc38b241928890908b2b1bf39eea4e56f7f201e1d2c68e4ba72ef5d66

Contents?: true

Size: 642 Bytes

Versions: 7

Compression:

Stored size: 642 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 key && data.key?(key.to_sym)
        fetch(key.to_sym)
      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

7 entries across 7 versions & 1 rubygems

Version Path
a9n-1.5.1 lib/a9n/struct.rb
a9n-1.5.0 lib/a9n/struct.rb
a9n-1.3.1 lib/a9n/struct.rb
a9n-1.3.0 lib/a9n/struct.rb
a9n-1.2.3 lib/a9n/struct.rb
a9n-1.2.2 lib/a9n/struct.rb
a9n-1.2.1 lib/a9n/struct.rb