Odejmij wartości z hash od odpowiednich wartości w innym skrócie

Chciałbym móc odjąć dwa skróty i uzyskać trzeci skrót w Ruby.

Dwa skróty wyglądają tak:

h1 = {"Cat" => 100, "Dog" => 5, "Bird" => 2, "Snake" => 10}
h1.default = 0

h2 = {"cat" => 50, "dog" => 3, "BIRD" => 4, "Mouse" => 75, "Snake" => 10}
h2.default = 0

Chciałbym móc wywołać metodę na h1 w następujący sposób:

h1.difference(h2)

i uzyskaj ten skrót:

{"Cat" => 50, "Dog" => 2, "BIRD" => -2, "Mouse" => -75}

Chciałbym utworzyć nowy skrót z kluczami z obu skrótów i wartości nowego skrótu jako wartość klucza w pierwszym skrócie minus wartość tego klucza w drugim skrócie. Chwyt polega na tym, że chciałbym, aby ta metoda Hash działała niezależnie od przypadku kluczy. Innymi słowy, chciałbym, aby „Kot” pasował do „kota”.

Oto, co mam do tej pory:

class Hash
  def difference(another_hash)
    (keys + another_hash.keys).map { |key| key.strip }.uniq.inject(Hash.new(0)) { |acc, key| acc[key] = (self[key] - another_hash[key]); acc }.delete_if { |key, value| value == 0 }
  end
end

To jest OK, ale niestety wynik nie jest tym, czego chcę.

Każda pomoc byłaby doceniana.

questionAnswers(5)

yourAnswerToTheQuestion