HyakuninIssyu 0.6.1 → 0.6.2

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