class XarozedNameGenerator::NameGenerator
Public Class Methods
new(chainlen=2, max_len=9)
click to toggle source
# File lib/xarozed_name_generator.rb, line 7 def initialize(chainlen=2, max_len=9) if chainlen > 1 and chainlen < 10 path = File.dirname(__FILE__) + "/names/male_and_neutral" name_list = File.readlines(path).join.split(" ") @chainlen = chainlen @max_len = max_len @markov_dict = MarkovDict.new name_list.collect do |name| s = ' ' * chainlen + name (0..name.length).each do |i| @markov_dict.add_key(s[i...i+chainlen], s[i+chainlen]) end @markov_dict.add_key(s[name.length...name.length+chainlen], '\n') end else raise ArgumentError, "Wrong chain length: #{chainlen}. Must be > 1 and < 10." end end
Public Instance Methods
name()
click to toggle source
# File lib/xarozed_name_generator.rb, line 27 def name prefix = ' ' * @chainlen name = '' suffix = '' while true suffix = @markov_dict.get_suffix(prefix) if (suffix == '\n') or (name.length > @max_len) break else name += suffix prefix = prefix[0...@chainlen-1] + suffix end end return name.capitalize end