# requires Ruby 2.7 or newer
config = { name: "app", version: [1, 2, 0] }
# *** before: ***
if config.is_a?(Hash) && config[:name] && config[:version].is_a?(Array)
name_old = config[:name]
major_old = config[:version][0]
end
# *** in version 2.7 (experimental): ***
case config
in { name: String => name, version: [major, *] }
puts "#{name} v#{major}"
else
puts "unrecognized config"
end