# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later class Construct < Struct def self.new(hash) keys = hash.keys vals = hash.values return super(*keys).new(*vals) end def expand(hash) return Construct.new(self.to_h.merge(hash)) end end