.start_with? method not recognizing substring 'a'

Viewed 70

I want to translate a string into pig latin. The rules are as following:

  1. Valid words are two or more letters long.
  2. If a word begins with a consonant (a letter other than 'a', 'e', 'i', 'o', or 'u'), then that first letter is shifted to the end of the word.
  3. Then add 'ay'.

I managed to come up with the method:

 def translate(word)
      if word.size <= 2
         word
      elsif
          word.size > 2
         !word.start_with?('a', 'e', 'i', 'o', 'u')
          x = word.reverse.chop.reverse
          x.insert(-1, word[0])
          x << "ay"
      else
          word << "ay"
      end
    end

However, my test does not pass for certain strings,

Test Passed: Value == "c"
Test Passed: Value == "pklqfay"
Test Passed: Value == "yykay"
Test Passed: Value == "fqhzcbjay"
Test Passed: Value == "ndnrzzrhgtay"
Test Passed: Value == "dsvjray"
Test Passed: Value == "qnrgdfay"
Test Passed: Value == "npfay"
Test Passed: Value == "ldyuqpewypay"
Test Passed: Value == "arqokudmuxay"
Test Passed: Value == "spvhxay"
Test Passed: Value == "firvmanxay"
Expected: 'aeijezpbay' - Expected: "aeijezpbay", instead got: "eijezpbaay"
Expected: 'etafhuay' - Expected: "etafhuay", instead got: "tafhueay"

These tests passes:

Test.assert_equals(translate("billy"),"illybay","Expected: 'illybay'")
Test.assert_equals(translate("emily"),"emilyay","Expected: 'emilyay'")

I am not sure why.

2 Answers
Related