# frozen_string_literal: true module Pleiades # Util Modules. module Util class << self def define_reader(hash) Struct.new( *hash.keys.map { |key| key.underscore.to_sym } ).new( *hash.values.map { |s| Hash === s ? define_reader(s) : s.freeze } .map(&:freeze) ) end end end end