# frozen_string_literal: false

class Struct

  def [](key)
    send(key)
  end

  def []=(key, val)
    send("#{key}=", val)
  end

  def attributes
    each_pair.with_object({}) { |(key, val), hash| hash[key] = val }
  end

  def replace(args)
    args.each_pair { |key, val| send("#{key}=", val) }
  end

end