Sha256: 8874f63c7e0daa6cf053db878a7287409a14a1ceaff0bf62b6773229d982956c
Contents?: true
Size: 671 Bytes
Versions: 129
Compression:
Stored size: 671 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]+(?=y)|[^aeiou]+)(.*)/).first end end module BookKeeping VERSION = 2 end
Version data entries
129 entries across 129 versions & 1 rubygems