gimei 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/gimei.rb CHANGED
@@ -3,45 +3,44 @@ require 'yaml'
3
3
 
4
4
  class Gimei
5
5
  NAMES = YAML.load_file(File.expand_path(File.join('..', 'data', 'names.yml'), __FILE__))
6
+ GENDER = [:male, :female].freeze
6
7
 
7
- class First
8
- def initialize
9
- @name = NAMES['first_name'].sample
8
+ class << self
9
+ def male
10
+ new(:male)
11
+ end
12
+
13
+ def female
14
+ new(:female)
10
15
  end
11
16
 
12
17
  def kanji
13
- @name[0]
18
+ name = new
19
+ "#{name.last.kanji} #{name.first.kanji}"
14
20
  end
15
21
 
16
22
  def hiragana
17
- @name[1]
23
+ name = new
24
+ "#{name.last.hiragana} #{name.first.hiragana}"
18
25
  end
19
26
 
20
27
  def katakana
21
- @name[2]
22
- end
23
- end
24
-
25
- class Last
26
- def initialize
27
- @name = NAMES['last_name'].sample
28
- end
29
-
30
- def kanji
31
- @name[0]
28
+ name = new
29
+ "#{name.last.katakana} #{name.first.katakana}"
32
30
  end
33
31
 
34
- def hiragana
35
- @name[1]
32
+ def first
33
+ new.first
36
34
  end
37
35
 
38
- def katakana
39
- @name[2]
36
+ def last
37
+ new.last
40
38
  end
41
39
  end
42
40
 
43
- def initialize
44
- @first = First.new
41
+ def initialize(gender = nil)
42
+ @gender = gender || GENDER.sample
43
+ @first = First.new @gender
45
44
  @last = Last.new
46
45
  end
47
46
 
@@ -57,6 +56,10 @@ class Gimei
57
56
  "#{last.katakana} #{first.katakana}"
58
57
  end
59
58
 
59
+ def to_s
60
+ kanji
61
+ end
62
+
60
63
  def first
61
64
  @first
62
65
  end
@@ -65,28 +68,74 @@ class Gimei
65
68
  @last
66
69
  end
67
70
 
68
- class << self
71
+ def male?
72
+ @gender == :male
73
+ end
74
+
75
+ def female?
76
+ @gender == :female
77
+ end
78
+
79
+ class First
80
+ class << self
81
+ def male
82
+ new(:male)
83
+ end
84
+
85
+ def female
86
+ new(:female)
87
+ end
88
+ end
89
+
90
+ def initialize(gender = nil)
91
+ @gender = gender || GENDER.sample
92
+ @name = NAMES['first_name'][@gender.to_s].sample
93
+ end
94
+
95
+ def male?
96
+ @gender == :male
97
+ end
98
+
99
+ def female?
100
+ @gender == :female
101
+ end
102
+
69
103
  def kanji
70
- name = new
71
- "#{name.last.kanji} #{name.first.kanji}"
104
+ @name[0]
72
105
  end
73
106
 
74
107
  def hiragana
75
- name = new
76
- "#{name.last.hiragana} #{name.first.hiragana}"
108
+ @name[1]
77
109
  end
78
110
 
79
111
  def katakana
80
- name = new
81
- "#{name.last.katakana} #{name.first.katakana}"
112
+ @name[2]
82
113
  end
83
114
 
84
- def first
85
- new.first
115
+ def to_s
116
+ kanji
86
117
  end
118
+ end
87
119
 
88
- def last
89
- new.last
120
+ class Last
121
+ def initialize
122
+ @name = NAMES['last_name'].sample
123
+ end
124
+
125
+ def kanji
126
+ @name[0]
127
+ end
128
+
129
+ def hiragana
130
+ @name[1]
131
+ end
132
+
133
+ def katakana
134
+ @name[2]
135
+ end
136
+
137
+ def to_s
138
+ kanji
90
139
  end
91
140
  end
92
141
  end
data/lib/gimei/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Gimei
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
data/spec/name_spec.rb CHANGED
@@ -2,21 +2,41 @@
2
2
  require_relative 'spec_helper'
3
3
 
4
4
  describe Gimei do
5
- before { @name = Gimei.new }
5
+ describe '.male' do
6
+ before { @name = Gimei.male }
7
+
8
+ it '男性の名前が返ること' do
9
+ @name.male?.must_equal true
10
+ end
11
+ end
12
+
13
+ describe '.female' do
14
+ before { @name = Gimei.female }
15
+
16
+ it '女性の名前が返ること' do
17
+ @name.female?.must_equal true
18
+ end
19
+ end
6
20
 
7
21
  describe '#kanji' do
22
+ before { @name = Gimei.new }
23
+
8
24
  it '全角文字とスペースが返ること' do
9
25
  @name.kanji.must_match /\A[#{Moji.zen}\s]+\z/
10
26
  end
11
27
  end
12
28
 
13
29
  describe '#hiragana' do
30
+ before { @name = Gimei.new }
31
+
14
32
  it 'ひらがなとスペースが返ること' do
15
33
  @name.hiragana.must_match /\A[\p{hiragana}\s]+\z/
16
34
  end
17
35
  end
18
36
 
19
37
  describe '#katakana' do
38
+ before { @name = Gimei.new }
39
+
20
40
  it 'カタカナとスペースが返ること' do
21
41
  @name.katakana.must_match /\A[\p{katakana}\s]+\z/
22
42
  end
@@ -24,25 +44,53 @@ describe Gimei do
24
44
  end
25
45
 
26
46
  describe Gimei::First do
27
- before { @name = Gimei::First.new }
47
+ describe '.male' do
48
+ before { @name = Gimei::First.male }
49
+
50
+ it '男性の名前が返ること' do
51
+ @name.male?.must_equal true
52
+ end
53
+ end
54
+
55
+ describe '.female' do
56
+ before { @name = Gimei::First.female }
57
+
58
+ it '女性の名前が返ること' do
59
+ @name.female?.must_equal true
60
+ end
61
+ end
28
62
 
29
63
  describe '#kanji' do
64
+ before { @name = Gimei::First.new }
65
+
30
66
  it '全角文字が返ること' do
31
67
  @name.kanji.must_match /\A#{Moji.zen}+\z/
32
68
  end
33
69
  end
34
70
 
35
71
  describe '#hiragana' do
72
+ before { @name = Gimei::First.new }
73
+
36
74
  it 'ひらがなが返ること' do
37
75
  @name.hiragana.must_match /\A\p{hiragana}+\z/
38
76
  end
39
77
  end
40
78
 
41
79
  describe '#katakana' do
80
+ before { @name = Gimei::First.new }
81
+
42
82
  it 'カタカナが返ること' do
43
83
  @name.katakana.must_match /\A\p{katakana}+\z/
44
84
  end
45
85
  end
86
+
87
+ describe '#to_s' do
88
+ before { @name = Gimei::First.new }
89
+
90
+ it '全角文字が返ること' do
91
+ @name.to_s.must_match /\A#{Moji.zen}+\z/
92
+ end
93
+ end
46
94
  end
47
95
 
48
96
  describe Gimei::Last do
@@ -65,5 +113,11 @@ describe Gimei::Last do
65
113
  @name.katakana.must_match /\A\p{katakana}+\z/
66
114
  end
67
115
  end
116
+
117
+ describe '#to_s' do
118
+ it '全角文字が返ること' do
119
+ @name.to_s.must_match /\A#{Moji.zen}+\z/
120
+ end
121
+ end
68
122
  end
69
123
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gimei
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - willnet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-09 00:00:00.000000000 Z
11
+ date: 2013-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -61,6 +61,7 @@ extra_rdoc_files: []
61
61
  files:
62
62
  - .gitignore
63
63
  - .travis.yml
64
+ - CHANGELOG.md
64
65
  - Gemfile
65
66
  - LICENSE.txt
66
67
  - README.md
@@ -72,7 +73,8 @@ files:
72
73
  - spec/name_spec.rb
73
74
  - spec/spec_helper.rb
74
75
  homepage: https://github.com/willnet/gimei
75
- licenses: []
76
+ licenses:
77
+ - MIT
76
78
  metadata: {}
77
79
  post_install_message:
78
80
  rdoc_options: []
@@ -90,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
92
  version: '0'
91
93
  requirements: []
92
94
  rubyforge_project:
93
- rubygems_version: 2.0.2
95
+ rubygems_version: 2.0.3
94
96
  signing_key:
95
97
  specification_version: 4
96
98
  summary: random Japanese name generator. support kanji, hiragana, and katakana