require 'json'

eff = JSON.parse(File.read("src/types.json"))

def make_branches(type, defenders, efficacy)
  if defenders.empty?
    []
  else 
    ["(#{type}, #{defenders.join(' | ')}) => #{efficacy},"]
  end
end

branches = eff.flat_map do |eff|
  type = eff['name']
  [
    *make_branches(type, eff['immunes'], 'Zero'),
    *make_branches(type, eff['weaknesses'], 'Weak'),
    *make_branches(type, eff['strengths'], 'Strong'),
  ]
end

puts "match (self, defender) {
  #{branches.join("\n  ")}
  #{make_branches('_', ['_'], 'Neutral')[0]}
}"