Class: Namey::Generator
- Inherits:
-
Object
- Object
- Namey::Generator
- Defined in:
- lib/namey/generator.rb
Overview
Main class for namey, handles generating a name.
Instance Method Summary collapse
-
#female(frequency = :common, surname = true) ⇒ Object
generate a female name.
-
#generate(params = {}) ⇒ Object
generate a name using the supplied parameter hash.
-
#initialize(dbname = nil) ⇒ Generator
constructor
initialize the name generator *
dbname
- Sequel style db URI ex: ‘sqlite://foo.db’. -
#male(frequency = :common, surname = true) ⇒ Object
generate a male name.
-
#name(frequency = :common, surname = true) ⇒ Object
generate a name.
-
#surname(frequency = :common) ⇒ Object
generate a surname.
Constructor Details
#initialize(dbname = nil) ⇒ Generator
initialize the name generator
-
dbname
- Sequel style db URI ex: ‘sqlite://foo.db’
13 14 15 16 17 18 19 20 |
# File 'lib/namey/generator.rb', line 13 def initialize(dbname = nil) if dbname.is_a? Sequel::Database @db = dbname else dbname = Namey.db_path if dbname.nil? @db = Sequel.connect(dbname) end 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
45 46 47 |
# File 'lib/namey/generator.rb', line 45 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
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/namey/generator.rb', line 67 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]) else # # do some basic data validation in case someone is being a knucklehead # params[:min_freq] = params[:min_freq].to_i params[:max_freq] = params[:max_freq].to_i params[:max_freq] = params[:min_freq] + 1 if params[:max_freq] <= params[:min_freq] # max_freq needs to be at least 4 to get any results back, # because the most common male name only rates 3.3 # JAMES 3.318 3.318 1 params[:max_freq] = 4 if params[:max_freq] < 4 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
36 37 38 |
# File 'lib/namey/generator.rb', line 36 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
27 28 29 |
# File 'lib/namey/generator.rb', line 27 def name(frequency = :common, surname = true) generate(:frequency => frequency, :with_surname =>surname) end |
#surname(frequency = :common) ⇒ Object
generate a surname
-
frequency
- :common, :rare, :all
53 54 55 |
# File 'lib/namey/generator.rb', line 53 def surname(frequency = :common) generate(:type => :surname, :frequency => frequency) end |