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.78 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.77 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.76 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.75 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.74 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.73 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.72 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.71 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.70 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.69 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.68 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.67 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.66 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.65 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.64 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.63 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.62 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.61 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.60 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb
trackler-2.2.1.59 tracks/ruby/exercises/pig-latin/.meta/solutions/pig_latin.rb