Class: NameBank::Repository
- Inherits:
-
Object
- Object
- NameBank::Repository
- 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
- #countries ⇒ Object
- #firstnames(country:, gender:, variant: nil, script: :latin) ⇒ Object
-
#initialize(data_dir:) ⇒ Repository
constructor
A new instance of Repository.
- #lastnames(country:, variant: nil, script: :latin) ⇒ Object
- #scripts(country:) ⇒ Object
- #variants(country:) ⇒ Object
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
#countries ⇒ Object
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 |