Class: Namey::Generator

Inherits:
Object
  • Object
show all
Defined in:
lib/namey/generator.rb

Overview

Main class for namey, handles generating a name.

Instance Method Summary collapse

Constructor Details

#initialize(dbname = nil) ⇒ Generator

initialize the name generator

  • dbname - Sequel style db URI ex: ‘sqlite://foo.db’



13
14
15
16
# File 'lib/namey/generator.rb', line 13

def initialize(dbname = nil)
  dbname = Namey.db_path if dbname.nil?
  @db = Sequel.connect(dbname)
end

Instance Method Details

#female(frequency = :common, surname = true) ⇒ Object

generate a female name

  • frequency - :common, :rare, :all

  • surname - true if you want a full name, false if you just want a first name



41
42
43
# File 'lib/namey/generator.rb', line 41

def female(frequency = :common, surname = true)
  generate(:type => :female, :frequency => frequency, :with_surname => surname)      
end

#generate(params = {}) ⇒ Object

generate a name using the supplied parameter hash

  • params - A hash of parameters

Params

  • :type - :male, :female, :surname

  • :frequency - :common, :rare, :all

  • :min_freq - raw frequency values to specify a precise range

  • :max_freq - raw frequency values to specify a precise range



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/namey/generator.rb', line 63

def generate(params = {})
  params = {
    :type => random_gender,
    :frequency => :common,
    :with_surname => true
  }.merge(params)

  
  if ! ( params[:min_freq] || params[:max_freq] )
    params[:min_freq], params[:max_freq] = frequency_values(params[:frequency])
  end
  
  name = get_name(params[:type], params[:min_freq], params[:max_freq])

  # add surname if needed
  if params[:type] != :surname && params[:with_surname] == true
    name = "#{name} #{get_name(:surname, params[:min_freq], params[:max_freq])}"
  end
  name
end

#male(frequency = :common, surname = true) ⇒ Object

generate a male name

  • frequency - :common, :rare, :all

  • surname - true if you want a full name, false if you just want a first name



32
33
34
# File 'lib/namey/generator.rb', line 32

def male(frequency = :common, surname = true)
  generate(:type => :male, :frequency => frequency, :with_surname => surname)
end

#name(frequency = :common, surname = true) ⇒ Object

generate a name

  • frequency - :common, :rare, :all

  • surname - true if you want a full name, false if you just want a first name



23
24
25
# File 'lib/namey/generator.rb', line 23

def name(frequency = :common, surname = true)
  generate(:frequency => frequency, :with_surname =>surname)
end

#surname(frequency = :common) ⇒ Object

generate a surname

  • frequency - :common, :rare, :all



49
50
51
# File 'lib/namey/generator.rb', line 49

def surname(frequency = :common)
  generate(:type => :surname, :frequency => frequency)
end