Sha256: e07d61f0a4e16050ea89a0067044c552a518e8c82612292402c3e577a046e005

Contents?: true

Size: 554 Bytes

Versions: 9

Compression:

Stored size: 554 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 method_missing(name, *_args)
      if data.key?(name)
        fetch(name)
      else
        raise NoSuchConfigurationVariableError.new, name
      end
    end

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

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
a9n-1.1.1 lib/a9n/struct.rb
a9n-1.1.0 lib/a9n/struct.rb
a9n-1.0.0 lib/a9n/struct.rb
a9n-0.10.0 lib/a9n/struct.rb
a9n-0.9.1 lib/a9n/struct.rb
a9n-0.9.0 lib/a9n/struct.rb
a9n-0.8.3 lib/a9n/struct.rb
a9n-0.8.2 lib/a9n/struct.rb
a9n-0.8.0 lib/a9n/struct.rb