Module: Faker::JapaneseName

Defined in:
lib/faker/japanese_name.rb,
lib/faker/japanese_name/version.rb

Overview

The JapaneseName module provides methods for generating Japanese names and their kana representations.

Constant Summary collapse

VERSION =
"0.2.2"

Class Method Summary collapse

Class Method Details

.combine_names(family_name:, given_name:) ⇒ Object



43
44
45
46
47
48
# File 'lib/faker/japanese_name.rb', line 43

def self.combine_names(family_name:, given_name:)
  {
    name: "#{family_name[:name]} #{given_name[:name]}",
    kana: "#{family_name[:kana]} #{given_name[:kana]}"
  }
end

.family_nameObject



9
10
11
12
13
# File 'lib/faker/japanese_name.rb', line 9

def self.family_name
  @family_names ||= load_data("family_name.dat")

  [:name, :kana].zip(@family_names.sample).to_h
end

.female_given_nameObject



25
26
27
28
29
# File 'lib/faker/japanese_name.rb', line 25

def self.female_given_name
  @female_given_names ||= load_data("female_given_name.dat")

  [:name, :kana].zip(@female_given_names.sample).to_h
end

.female_nameObject



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

def self.female_name
  combine_names(family_name: family_name, given_name: female_given_name)
end

.given_nameObject



15
16
17
# File 'lib/faker/japanese_name.rb', line 15

def self.given_name
  [male_given_name, female_given_name].sample
end

.load_data(filename) ⇒ Object



50
51
52
53
54
55
# File 'lib/faker/japanese_name.rb', line 50

def self.load_data(filename)
  ::File.readlines(
    ::File.join(::File.expand_path("../../data", __dir__), filename),
    chomp: true
  ).map { |line| line.split("\t", 2) }
end

.male_given_nameObject



19
20
21
22
23
# File 'lib/faker/japanese_name.rb', line 19

def self.male_given_name
  @male_given_names ||= load_data("male_given_name.dat")

  [:name, :kana].zip(@male_given_names.sample).to_h
end

.male_nameObject



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

def self.male_name
  combine_names(family_name: family_name, given_name: male_given_name)
end

.nameObject



31
32
33
# File 'lib/faker/japanese_name.rb', line 31

def self.name
  combine_names(family_name: family_name, given_name: given_name)
end