私のコードは 1 つの単語に対して正常に動作するため、サーチャー Proc は正常に動作します。複数の単語を配列に格納し、各単語をprocに渡してまとめることで、複数の単語に対して機能させようとしていましたが、「パイを食べる」などをテストすると、これが返されます。私が間違っていることを教えてもらえますか?
Failures:
1) translate translates two words
Failure/Error: s.should == "eatay iepay"
expected: "eatay iepay"
got: "eat pieay eat pieayay" (using ==)
# ./04_pig_latin/pig_latin_spec.rb:41:in `block (2 levels) in <top (required)>'
私のコードは次のとおりです。
def translate(x)
array = x.split(' ')
searcher = Proc.new{
if x.index(/[aeiou]/) == 0
x = x + "ay"
elsif x[0..1] == "qu"
first = x.chr
x.reverse!.chop!.reverse!
second = x.chr
x.reverse!.chop!.reverse!
x = x + first + second + "ay"
elsif x.index(/[aeiou]/) == 1
first = x.chr
x.reverse!.chop!.reverse!
x = x + first + "ay"
elsif x[1..2] == "qu"
first = x.chr
x.reverse!.chop!.reverse!
second = x.chr
x.reverse!.chop!.reverse!
third = x.chr
x.reverse!.chop!.reverse!
x = x + first + second + third +"ay"
elsif x.index(/[aeiou]/) == 2
first = x.chr.chr
x.reverse!.chop!.reverse!
second = x.chr
x.reverse!.chop!.reverse!
x = x + first + second + "ay"
elsif x.index(/[aeiou]/) == 3
first = x.chr
x.reverse!.chop!.reverse!
second = x.chr
x.reverse!.chop!.reverse!
third = x.chr
x.reverse!.chop!.reverse!
x = x + first + second + third +"ay"
else
x
end
}
if array.count == 1
searcher.call
return x
else
return array.collect(&searcher).join(' ')
end
end