Class: NameBank
- Inherits:
-
Object
show all
- Defined in:
- lib/name_bank.rb,
lib/name_bank/errors.rb,
lib/name_bank/version.rb,
lib/name_bank/pool_store.rb,
lib/name_bank/pool_schema.rb
Overview
Declared as a class, not a module: NameBank itself is one (see lib/name_bank.rb).
Defined Under Namespace
Modules: Error, PoolSchema
Classes: EmptyPool, MalformedPool, UnknownCountry, UnknownGender, UnknownScript, UnknownVariant
Constant Summary
collapse
- DATA_DIR =
File.expand_path("../data", __dir__)
- VERSION =
"0.2.0"
Class Method Summary
collapse
Instance Method Summary
collapse
-
#countries ⇒ Object
-
#first_name(country:, gender:, rng:, variant: nil, script: :latin) ⇒ Object
-
#first_names(country:, gender:, variant: nil, script: :latin) ⇒ Object
The whole frequency-ordered pool, frozen.
-
#full_name(country:, gender:, rng:, variant: nil, script: :latin) ⇒ Object
-
#initialize(data_dir: DATA_DIR) ⇒ NameBank
constructor
A new instance of NameBank.
-
#last_name(country:, rng:, variant: nil, script: :latin) ⇒ Object
-
#last_names(country:, variant: nil, script: :latin) ⇒ Object
-
#scripts(country:) ⇒ Object
The script forms this country offers, not writing systems — see CONTEXT.md.
-
#variants(country:) ⇒ Object
Constructor Details
#initialize(data_dir: DATA_DIR) ⇒ NameBank
Returns a new instance of NameBank.
37
38
39
|
# File 'lib/name_bank.rb', line 37
def initialize(data_dir: DATA_DIR)
@store = PoolStore.new(data_dir)
end
|
Class Method Details
.countries ⇒ Object
32
|
# File 'lib/name_bank.rb', line 32
def countries(...) = default.countries(...)
|
.default ⇒ Object
23
24
25
|
# File 'lib/name_bank.rb', line 23
def default
@default ||= new
end
|
.first_name ⇒ Object
27
|
# File 'lib/name_bank.rb', line 27
def first_name(...) = default.first_name(...)
|
.first_names ⇒ Object
30
|
# File 'lib/name_bank.rb', line 30
def first_names(...) = default.first_names(...)
|
.full_name ⇒ Object
29
|
# File 'lib/name_bank.rb', line 29
def full_name(...) = default.full_name(...)
|
.last_name ⇒ Object
28
|
# File 'lib/name_bank.rb', line 28
def last_name(...) = default.last_name(...)
|
.last_names ⇒ Object
31
|
# File 'lib/name_bank.rb', line 31
def last_names(...) = default.last_names(...)
|
.scripts ⇒ Object
34
|
# File 'lib/name_bank.rb', line 34
def scripts(...) = default.scripts(...)
|
.variants ⇒ Object
33
|
# File 'lib/name_bank.rb', line 33
def variants(...) = default.variants(...)
|
Instance Method Details
#countries ⇒ Object
65
66
67
|
# File 'lib/name_bank.rb', line 65
def countries
@store.countries
end
|
#first_name(country:, gender:, rng:, variant: nil, script: :latin) ⇒ Object
41
42
43
|
# File 'lib/name_bank.rb', line 41
def first_name(country:, gender:, rng:, variant: nil, script: :latin)
first_names(country: country, gender: gender, variant: variant, script: script).sample(random: rng)
end
|
#first_names(country:, gender:, variant: nil, script: :latin) ⇒ Object
The whole frequency-ordered pool, frozen. The name strings stay mutable.
57
58
59
|
# File 'lib/name_bank.rb', line 57
def first_names(country:, gender:, variant: nil, script: :latin)
pool(country, variant, PoolSchema.gender_key(gender), script)
end
|
#full_name(country:, gender:, rng:, variant: nil, script: :latin) ⇒ Object
49
50
51
52
53
54
|
# File 'lib/name_bank.rb', line 49
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
45
46
47
|
# File 'lib/name_bank.rb', line 45
def last_name(country:, rng:, variant: nil, script: :latin)
last_names(country: country, variant: variant, script: script).sample(random: rng)
end
|
#last_names(country:, variant: nil, script: :latin) ⇒ Object
61
62
63
|
# File 'lib/name_bank.rb', line 61
def last_names(country:, variant: nil, script: :latin)
pool(country, variant, PoolSchema::SURNAMES, script)
end
|
#scripts(country:) ⇒ Object
The script forms this country offers, not writing systems — see CONTEXT.md.
74
75
76
77
|
# File 'lib/name_bank.rb', line 74
def scripts(country:)
data = @store.pools(country, nil)
PoolSchema::KEYS.any? { |k| data[PoolSchema.native_key(k)]&.any? } ? %i[latin native] : %i[latin]
end
|
#variants(country:) ⇒ Object
69
70
71
|
# File 'lib/name_bank.rb', line 69
def variants(country:)
@store.variants(country)
end
|