HyakuninIssyu 0.6.1 → 0.6.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5f4245b17c96084fa90ad6d0cfb7646b07d98e08
4
- data.tar.gz: a32b9d40fb472ef130786a39d7e930ae893ce7f3
3
+ metadata.gz: 065f4bd1f89054fe5c8c6425feec6b66ce0bf7d1
4
+ data.tar.gz: 57cbe12266bd96c0106c0c68731572a078b3eb91
5
5
  SHA512:
6
- metadata.gz: 7c5b03e49db98323b2693f32d8428e347296377ebcac79ed08015bf4f6c53d07d3b2793734ab77ea0a91fcc4e3b7b9bd961378528fdedf4310aced5e3b77c52b
7
- data.tar.gz: 45a5b5c68da766c18576976f7db8e62e57927d8745e138e3fb8100f6eaa18d6abc81d0088019aa0377a125cf53c00a2e97bf37473abe391de1376159e120ca23
6
+ metadata.gz: f3ad79fe58cd84d2b30a807a97ddf7ffb2d9e5f2241967b73396b1cb535ea16f58808ba3d82f4b3a0ab92b4dae5482e63a4ec74b17fe1a4079f2ada1fdabb17a
7
+ data.tar.gz: 0481f021dcff5544cc954ea44054bdcd6fb2be9a88102a660708f02fb459ed8353ecee164c12bbce5bcc10e96822842e956fb60a715448b294cf4b4120cceb48
data/.travis.yml CHANGED
@@ -6,3 +6,4 @@ gemfile:
6
6
  branches:
7
7
  only:
8
8
  - master
9
+ - develop
@@ -21,5 +21,6 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake"
23
23
  spec.add_development_dependency "rspec"
24
+ spec.add_development_dependency "moji"
24
25
  spec.add_development_dependency "coveralls"
25
26
  end
data/lib/HyakuninIssyu.rb CHANGED
@@ -2,7 +2,8 @@ require "HyakuninIssyu/version"
2
2
  require "yaml"
3
3
 
4
4
  class HyakuninIssyu
5
- def initialize(id=nil)
5
+ def initialize(id=1)
6
+ return false if id<1 || id>100
6
7
  @poem = Poem.new(id)
7
8
  @poet = Poet.new(id)
8
9
  end
@@ -16,9 +17,9 @@ class HyakuninIssyu
16
17
  end
17
18
 
18
19
  class Poem
19
- def initialize(id=nil)
20
+ def initialize(id)
20
21
  @poems = YAML.load_file(File.expand_path(File.join('..', 'data', 'poems.yml'), __FILE__))
21
- @poem = id ? @poems[id-1] : @poems[0]
22
+ @poem = @poems[id-1]
22
23
  end
23
24
 
24
25
  def id
@@ -115,9 +116,9 @@ class HyakuninIssyu
115
116
  end
116
117
 
117
118
  class Poet
118
- def initialize(id=nil)
119
+ def initialize(id)
119
120
  @poets = YAML.load_file(File.expand_path(File.join('..', 'data', 'poets.yml'), __FILE__))
120
- @poet = id ? @poets[id-1] : @poets[0]
121
+ @poet = @poets[id-1]
121
122
  end
122
123
 
123
124
  def id
@@ -1,3 +1,3 @@
1
1
  class HyakuninIssyu
2
- VERSION = "0.6.1"
2
+ VERSION = "0.6.2"
3
3
  end
@@ -1,64 +1,258 @@
1
1
  require "spec_helper.rb"
2
2
 
3
3
  describe HyakuninIssyu do
4
- describe 'poem with particular poem id' do
5
- before do
6
- @id = rand(100)+1
7
- @test_poem = HyakuninIssyu.new(@id)
4
+ describe 'Poem' do
5
+ before { @poems = YAML.load_file(File.expand_path(File.join('..', '..', 'lib', 'data', 'poems.yml'), __FILE__)) }
8
6
 
9
- @poems = YAML.load_file(File.expand_path(File.join('..', '..', 'lib', 'data', 'poems.yml'), __FILE__))
10
- @poets = YAML.load_file(File.expand_path(File.join('..', '..', 'lib', 'data', 'poets.yml'), __FILE__))
7
+ describe '#id?' do
8
+ context 'when provided proper id' do
9
+ before { @poem = HyakuninIssyu.new(3) }
10
+ it {
11
+ @poem.poem.id.should be_true
12
+ }
13
+ end
14
+
15
+ context 'when provided unproper id' do
16
+ before { @poem = HyakuninIssyu.new(101) }
17
+ it {
18
+ @poem.poem.should be_false
19
+ }
20
+ end
21
+
22
+ context 'when provided no id' do
23
+ before { @poem = HyakuninIssyu.new }
24
+ it {
25
+ @poem.poem.id.should be_true
26
+ }
27
+
28
+ it {
29
+ @poem.poem.id.should eq(1)
30
+ }
31
+ end
11
32
  end
12
33
 
13
- it "should return poem" do
14
- @test_poem.poem.kanji.should_not be_nil
34
+ describe '#list' do
35
+ before { @poem = HyakuninIssyu.new }
36
+ it {
37
+ @poem.poem.list.should have(100).items
38
+ }
15
39
  end
16
40
 
17
- it "should return poet" do
18
- @test_poem.poet.name.ja.should_not be_nil
41
+ context 'when showing full part' do
42
+ before { @poem = HyakuninIssyu.new(10) }
43
+
44
+ describe '#kana' do
45
+ it {
46
+ @poem.poem.kana.should include_kana
47
+ }
48
+
49
+ it {
50
+ @poem.poem.kana.split(//u).size.should eq(32)
51
+ }
52
+ end
53
+
54
+ describe '#kanji' do
55
+ it {
56
+ @poem.poem.kanji.should include_kanji
57
+ }
58
+
59
+ it {
60
+ @poem.poem.kanji.split(/ /).size.should eq(5)
61
+ }
62
+ end
63
+
64
+ describe '#en' do
65
+ it {
66
+ @poem.poem.en.should be_english
67
+ }
68
+ end
69
+
70
+ describe '#comment' do
71
+ it {
72
+ @poem.poem.comment.should include_kanji
73
+ }
74
+ end
75
+
19
76
  end
20
77
 
21
- it "should return correct poem" do
22
- correct_poem = @poems[@id-1]["poem"]["kanji"]
23
- @test_poem.poem.kanji.should eq(correct_poem)
78
+ context 'when showing the first part' do
79
+ describe '#kana' do
80
+ before { @poem = HyakuninIssyu.new(10) }
81
+ it {
82
+ @poem.poem.first.kana.should include_kana
83
+ }
84
+
85
+ it {
86
+ @poem.poem.first.kana.split(//u).size.should eq(17)
87
+ }
88
+ end
89
+
90
+ describe '#kanji' do
91
+ before { @poem = HyakuninIssyu.new(10) }
92
+ it {
93
+ @poem.poem.first.kanji.should include_kanji
94
+ }
95
+ end
96
+
97
+ describe '#en' do
98
+ before { @poem = HyakuninIssyu.new(10) }
99
+ it {
100
+ @poem.poem.first.en.should be_english
101
+ }
102
+ end
24
103
  end
25
104
 
26
- it "should return correct poet" do
27
- correct_poet = @poets[@id-1]["name"]["ja"]
28
- @test_poem.poet.name.ja.should eq(correct_poet)
105
+ context 'when showing the last part' do
106
+ describe '#kana' do
107
+ before { @poem = HyakuninIssyu.new(10) }
108
+ it {
109
+ @poem.poem.last.kana.should include_kana
110
+ }
111
+
112
+ it {
113
+ @poem.poem.last.kana.split(//u).size.should eq(14)
114
+ }
115
+ end
116
+
117
+ describe '#kanji' do
118
+ before { @poem = HyakuninIssyu.new(10) }
119
+ it {
120
+ @poem.poem.last.kanji.should include_kanji
121
+ }
122
+ end
123
+
124
+ describe '#en' do
125
+ before { @poem = HyakuninIssyu.new(10) }
126
+ it {
127
+ @poem.poem.last.en.should be_english
128
+ }
129
+ end
29
130
  end
131
+ end
132
+
133
+ describe 'Poet' do
134
+ before { @poets = YAML.load_file(File.expand_path(File.join('..', '..', 'lib', 'data', 'poets.yml'), __FILE__)) }
135
+
136
+ describe '#id?' do
137
+ context 'when provided proper id' do
138
+ before { @poet = HyakuninIssyu.new(3) }
139
+ it {
140
+ @poet.poet.id.should be_true
141
+ }
142
+ end
143
+
144
+ context 'when provided unproper id' do
145
+ before { @poet = HyakuninIssyu.new(101) }
146
+ it {
147
+ @poet.poet.should be_false
148
+ }
149
+ end
30
150
 
31
- it "should return first half of poem" do
32
- first = @test_poem.poem.first.kanji
33
- first.should_not be_nil
151
+ context 'when provided no id' do
152
+ before { @poet = HyakuninIssyu.new }
153
+ it {
154
+ @poet.poet.id.should be_true
155
+ }
156
+
157
+ it {
158
+ @poet.poet.id.should eq(1)
159
+ }
160
+ end
34
161
  end
35
162
 
36
- it "should return last half of poem" do
37
- last = @test_poem.poem.last.kanji
38
- last.should_not be_nil
163
+ describe '#list' do
164
+ before { @poet = HyakuninIssyu.new }
165
+ it {
166
+ @poet.poet.list.should have(100).items
167
+ }
39
168
  end
40
169
 
41
- it "should return kana without first/last option" do
42
- kana = @test_poem.poem.kana
43
- kana.should_not be_nil
170
+ describe '#name' do
171
+ before { @poet = HyakuninIssyu.new }
172
+
173
+ describe '#ja' do
174
+ it {
175
+ @poet.poet.name.ja.should include_kanji
176
+ }
177
+ end
178
+
179
+ describe '#en' do
180
+ it {
181
+ @poet.poet.name.en.should be_english
182
+ }
183
+ end
44
184
  end
45
- end
46
185
 
47
- describe 'poem without any particular ids' do
48
- before do
49
- @test_poem = HyakuninIssyu.new
186
+ describe '#period' do
187
+ before { @poet = HyakuninIssyu.new }
188
+ it {
189
+ @poet.poet.period.should match(/-/)
190
+ }
50
191
  end
51
192
 
52
- it "should return poem[0]" do
53
- @test_poem.poem.kanji.should eq('秋の田の かりほの庵の 苫をあらみ わが衣手は 露にぬれつつ')
193
+ describe '#male?' do
194
+ context 'when poet is male' do
195
+ before { @poet = HyakuninIssyu.new(1) }
196
+ it {
197
+ @poet.poet.male?.should be_true
198
+ }
199
+ end
200
+
201
+ context 'when poet is female' do
202
+ before { @poet = HyakuninIssyu.new(2) }
203
+ it {
204
+ @poet.poet.male?.should be_false
205
+ }
206
+ end
54
207
  end
55
208
 
56
- it "should return the list of all poems" do
57
- @test_poem.poem.list.size.should eq(100)
209
+ describe '#female?' do
210
+ context 'when poet is male' do
211
+ before { @poet = HyakuninIssyu.new(1) }
212
+ it {
213
+ @poet.poet.female?.should be_false
214
+ }
215
+ end
216
+
217
+ context 'when poet is female' do
218
+ before { @poet = HyakuninIssyu.new(2) }
219
+ it {
220
+ @poet.poet.female?.should be_true
221
+ }
222
+ end
58
223
  end
59
224
 
60
- it "should return the list of all poets" do
61
- @test_poem.poet.list.size.should eq(100)
225
+ describe '#monk?' do
226
+ context 'when poet is monk' do
227
+ before { @poet = HyakuninIssyu.new(8) }
228
+ it {
229
+ @poet.poet.monk?.should be_true
230
+ }
231
+ end
232
+
233
+ context 'when poet is not monk' do
234
+ before { @poet = HyakuninIssyu.new(1) }
235
+ it {
236
+ @poet.poet.monk?.should be_false
237
+ }
238
+ end
239
+ end
240
+
241
+ describe '#semimaru?' do
242
+ context 'when poet is semimaru' do
243
+ before { @poet = HyakuninIssyu.new(10) }
244
+ it {
245
+ @poet.poet.semimaru?.should be_true
246
+ }
247
+ end
248
+
249
+ context 'when poet is not semimaru' do
250
+ before { @poet = HyakuninIssyu.new(1) }
251
+ it {
252
+ @poet.poet.semimaru?.should be_false
253
+ }
254
+ end
62
255
  end
63
256
  end
64
257
  end
258
+
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require "rubygems"
2
2
  require "bundler/setup"
3
3
  require "HyakuninIssyu"
4
+ require "moji"
4
5
  require 'coveralls'
5
6
  Coveralls.wear!
6
7
 
@@ -8,3 +9,28 @@ RSpec.configure do |config|
8
9
  config.mock_framework = :rspec
9
10
  end
10
11
 
12
+ RSpec::Matchers.define :include_kanji do |channel, expected_message|
13
+ match do |str|
14
+ result = false
15
+ str.split(//u).each do |char|
16
+ result = true if Moji.type?(char, Moji::ZEN_KANJI)
17
+ end
18
+ result
19
+ end
20
+ end
21
+
22
+ RSpec::Matchers.define :include_kana do |channel, expected_message|
23
+ match do |str|
24
+ result = false
25
+ str.split(//u).each do |char|
26
+ result = true if Moji.type?(char, Moji::ZEN_HIRA)
27
+ end
28
+ result
29
+ end
30
+ end
31
+
32
+ RSpec::Matchers.define :be_english do |channel, expected_message|
33
+ match do |str|
34
+ Moji.type?(str, Moji::HAN)
35
+ end
36
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: HyakuninIssyu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - tomomichi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-27 00:00:00.000000000 Z
11
+ date: 2013-08-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: moji
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: coveralls
57
71
  requirement: !ruby/object:Gem::Requirement