gimei 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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