Sha256: 4d1a88f186bb2b8d8336db5d9046e4e3fc8952e509a07f520f4cf7defe9bf482
Contents?: true
Size: 618 Bytes
Versions: 154
Compression:
Stored size: 618 Bytes
Contents
class PigLatin def self.translate(phrase) phrase.split(' ').map do |word| PigLatin.new(word).translate end.join(' ') end def initialize(word) @word = word.downcase.gsub(/[^a-z]/, '') end def translate return (word + 'ay') if it_starts_with_vowel_sound? start, remainder = parse_initial_consonant_sound_and_remainder remainder + start + 'ay' end private attr_reader :word def it_starts_with_vowel_sound? word.match /\A([aeiou]|y[^aeiou]|xr)/ end def parse_initial_consonant_sound_and_remainder word.scan(/\A([^aeiou]?qu|[^aeiou]+)(.*)/).first end end
Version data entries
154 entries across 154 versions & 1 rubygems