# frozen_string_literal: true

# License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later
# Full license explanation at https://github.com/houdiniproject/houdini/blob/master/LICENSE
class Construct < Struct
  def self.new(hash)
    keys = hash.keys
    vals = hash.values
    super(*keys).new(*vals)
  end

  def expand(hash)
    Construct.new(to_h.merge(hash))
  end
end