Class: NameBank::Repository

Inherits:
Object
  • Object
show all
Defined in:
lib/name_bank/repository.rb

Overview

Lazy, memoized loader of per-country name pools stored as YAML in data_dir.

Instance Method Summary collapse

Constructor Details

#initialize(data_dir:) ⇒ Repository

Returns a new instance of Repository.



8
9
10
11
12
# File 'lib/name_bank/repository.rb', line 8

def initialize(data_dir:)
  @data_dir = data_dir
  @countries_cache = {}
  @variants_cache = {}
end

Instance Method Details

#countriesObject



27
28
29
# File 'lib/name_bank/repository.rb', line 27

def countries
  @countries ||= yml_basenames(File.join(@data_dir, "countries"))
end

#firstnames(country:, gender:, variant: nil, script: :latin) ⇒ Object



14
15
16
# File 'lib/name_bank/repository.rb', line 14

def firstnames(country:, gender:, variant: nil, script: :latin)
  pool(load(country, variant), PoolSchema.gender_key(gender), script, country)
end

#lastnames(country:, variant: nil, script: :latin) ⇒ Object



18
19
20
# File 'lib/name_bank/repository.rb', line 18

def lastnames(country:, variant: nil, script: :latin)
  pool(load(country, variant), "lastnames", script, country)
end

#scripts(country:) ⇒ Object



22
23
24
25
# File 'lib/name_bank/repository.rb', line 22

def scripts(country:)
  data = load(country, nil)
  PoolSchema::KEYS.any? { |k| data[PoolSchema.native_key(k)]&.any? } ? %i[latin native] : %i[latin]
end

#variants(country:) ⇒ Object



31
32
33
# File 'lib/name_bank/repository.rb', line 31

def variants(country:)
  yml_basenames(File.join(@data_dir, "variants", country))
end