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

Version Path
trackler-2.2.1.180 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.179 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.178 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.177 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.176 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.175 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.174 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.173 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.172 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.171 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.170 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.169 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.167 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.166 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.165 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.164 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.163 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.162 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.161 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.160 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb