Module: NameBank

Defined in:
lib/name_bank.rb,
lib/name_bank/version.rb,
lib/name_bank/repository.rb,
lib/name_bank/pool_schema.rb

Overview

Authentic, gender-matched given names and surnames for 106 countries, addressed by ISO alpha-2 country code. Sampling is uniform and deterministic from a caller-supplied RNG — no global locale or random state.

Defined Under Namespace

Modules: PoolSchema Classes: Error, Repository, UnknownCountry, UnknownScript, UnknownVariant

Constant Summary collapse

DATA_DIR =
File.expand_path("../data", __dir__)
VERSION =
"0.1.6"

Class Method Summary collapse

Class Method Details

.countriesObject



35
36
37
# File 'lib/name_bank.rb', line 35

def countries
  repository.countries
end

.first_name(country:, gender:, rng:, variant: nil, script: :latin) ⇒ Object



20
21
22
# File 'lib/name_bank.rb', line 20

def first_name(country:, gender:, rng:, variant: nil, script: :latin)
  repository.firstnames(country: country, gender: gender, variant: variant, script: script).sample(random: rng)
end

.full_name(country:, gender:, rng:, variant: nil, script: :latin) ⇒ Object



28
29
30
31
32
33
# File 'lib/name_bank.rb', line 28

def full_name(country:, gender:, rng:, variant: nil, script: :latin)
  {
    firstname: first_name(country: country, gender: gender, rng: rng, variant: variant, script: script),
    lastname: last_name(country: country, rng: rng, variant: variant, script: script)
  }
end

.last_name(country:, rng:, variant: nil, script: :latin) ⇒ Object



24
25
26
# File 'lib/name_bank.rb', line 24

def last_name(country:, rng:, variant: nil, script: :latin)
  repository.lastnames(country: country, variant: variant, script: script).sample(random: rng)
end

.repositoryObject



47
48
49
# File 'lib/name_bank.rb', line 47

def repository
  @repository ||= Repository.new(data_dir: DATA_DIR)
end

.scripts(country:) ⇒ Object



43
44
45
# File 'lib/name_bank.rb', line 43

def scripts(country:)
  repository.scripts(country: country)
end

.variants(country:) ⇒ Object



39
40
41
# File 'lib/name_bank.rb', line 39

def variants(country:)
  repository.variants(country: country)
end