class NameGenerator::Main

Your one stop location for generating random names

Public Instance Methods

next_name(syllables = random_syllable_count) click to toggle source
# File lib/name_generator/main.rb, line 14
def next_name(syllables = random_syllable_count)
  name = generate_name(syllables)
  name = generate_name(syllables) until sensible_name?(name)
  titlecase(name)
end

Private Instance Methods

digraphs() click to toggle source
# File lib/name_generator/main.rb, line 44
def digraphs
  %w[a ac ad ar as at ax ba bi bo ce ci co de di e ed en es ex fa fo
     ga ge gi gu ha he in is it ju ka ky la le le lo mi mo na ne ne ni
     no o ob oi ol on or or os ou pe pi po qt re ro sa se so ta te ti
     to tu ud um un us ut va ve ve za zi]
end
generate_name(syllables) click to toggle source
# File lib/name_generator/main.rb, line 27
def generate_name(syllables)
  name = (1...syllables).collect do
    digraphs.sample
  end
  name << (digraphs + trigraphs).sample

  name.join
end
random_syllable_count() click to toggle source
# File lib/name_generator/main.rb, line 40
def random_syllable_count
  [2, 3, 4].sample
end
sensible_name?(name) click to toggle source
# File lib/name_generator/main.rb, line 36
def sensible_name?(name)
  name != ~ /.*[aeiou]{3}.*/i # reject if at least three vowels in a row
end
titlecase(name) click to toggle source
# File lib/name_generator/main.rb, line 22
def titlecase(name)
  name[0] = name[0].upcase
  name
end
trigraphs() click to toggle source
# File lib/name_generator/main.rb, line 51
def trigraphs
  %w[cla clu cra cre dre dro pha phi pho sha she sta stu tha the thi
     thy tri]
end