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

Version Path
trackler-2.0.8.54 tracks/ruby/exercises/pig-latin/example.rb
trackler-2.0.8.53 tracks/ruby/exercises/pig-latin/example.rb
trackler-2.0.8.52 tracks/ruby/exercises/pig-latin/example.rb
trackler-2.0.8.51 tracks/ruby/exercises/pig-latin/example.rb
trackler-2.0.8.50 tracks/ruby/exercises/pig-latin/example.rb
trackler-2.0.8.49 tracks/ruby/exercises/pig-latin/example.rb
trackler-2.0.8.48 tracks/ruby/exercises/pig-latin/example.rb
trackler-2.0.8.47 tracks/ruby/exercises/pig-latin/example.rb
trackler-2.0.8.46 tracks/ruby/exercises/pig-latin/example.rb
trackler-2.0.8.45 tracks/ruby/exercises/pig-latin/example.rb
trackler-2.0.8.44 tracks/ruby/exercises/pig-latin/example.rb
trackler-2.0.8.43 tracks/ruby/exercises/pig-latin/example.rb
trackler-2.0.8.42 tracks/ruby/exercises/pig-latin/example.rb
trackler-2.0.8.41 tracks/ruby/exercises/pig-latin/example.rb
trackler-2.0.8.40 tracks/ruby/exercises/pig-latin/example.rb
trackler-2.0.8.39 tracks/ruby/exercises/pig-latin/example.rb
trackler-2.0.8.38 tracks/ruby/exercises/pig-latin/example.rb
trackler-2.0.8.37 tracks/ruby/exercises/pig-latin/example.rb
trackler-2.0.8.36 tracks/ruby/exercises/pig-latin/example.rb
trackler-2.0.8.35 tracks/ruby/exercises/pig-latin/example.rb