aun 0.0.1 → 0.0.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: 75493ad2bc8313a55e259705ab7b84fcd5fad2ae
4
- data.tar.gz: f69acf2389fed37aa47c324a3e8ecf523b24b723
3
+ metadata.gz: 12979ef90ff5c7d165203cb0860ceb7c2b7e0db7
4
+ data.tar.gz: 8d287341379dee434fe3af5caa8bb74c2198b476
5
5
  SHA512:
6
- metadata.gz: ee910d95a60feb90e1561664cb747bdd5d37f80b372fcd9b89eccd1a216e671c7915587e33ee59db9c18351bed6d9e749334f93141a77395d29a375e495bd933
7
- data.tar.gz: 1b1b57cacdc46a2782a07a3fd1deb4e33752dde16fe7b3df3d496adcb0e476e99bd35f8bf29bc443df84d5096edf068496c5174bf21609a4685d94bc066b65a4
6
+ metadata.gz: f55e0b4aaba6f93a2e28f0e39e9d66487546b99e3f2748062382310a8290ba7bb26e23559b2339ad1665cb5dbbcda040b03a57d7234efe0e4458e97d9fb31176
7
+ data.tar.gz: 7d7e9f462ea9fc93279655785cb2ba846d72d3968256cbe7635cbe6f3e2911835d38bf2c9638a16a571a74745bb60b2fc785a78dd9b83ee39fed6b9278ec5cc3
data/Gemfile CHANGED
@@ -1,9 +1,9 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
- gem "rspec", "~> 2.14.1"
5
- gem "thor", "~> 0.18.1"
6
- gem "simplecov", "~> 0.8.2"
4
+ gem 'rspec', '~> 2.14.1'
5
+ gem 'thor', '~> 0.18.1'
6
+ gem 'simplecov', '~> 0.8.2'
7
7
  group :test do
8
8
  gem 'coveralls', require: false
9
9
  end
data/README.md CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/aun.svg)](http://badge.fury.io/rb/aun)
4
4
  [![Build Status](https://travis-ci.org/tbpgr/aun.png?branch=master)](https://travis-ci.org/tbpgr/aun)
5
+ [![Coverage Status](https://coveralls.io/repos/tbpgr/aun/badge.png)](https://coveralls.io/r/tbpgr/aun)
5
6
 
6
7
  Aun [阿吽] は「阿吽の呼吸」、「ツー」といえば「カー」など
7
8
  A に呼応して B のメッセージを返却するためのツールです。
@@ -132,6 +133,15 @@ print finder.talk_with_origin('ぬるぽ'), "\n"
132
133
  print finder.talk('やらないか?'), "\n"
133
134
  print finder.owner_talk('やらないか?'), "\n"
134
135
  print finder.talk_with_origin('やらないか?'), "\n"
136
+ print finder.talk_with_origin('ゆ・・・ゆるさん・・・'), "\n"
137
+ print finder.talk_with_origin('ゆ・・・ゆるさん・・・'), "\n"
138
+ print finder.talk_with_origin('ゆ・・・ゆるさん・・・'), "\n"
139
+
140
+ puts "!!! ver 0.0.2. 原典フィルタ !!!"
141
+ print finder.inspect_all('ドラゴンボール'), "\n"
142
+ print finder.talk_with_origin('ゆ・・・ゆるさん・・・', 'ドラゴンボール'), "\n"
143
+ print finder.talk_with_origin('ゆ・・・ゆるさん・・・', 'ドラゴンボール'), "\n"
144
+ print finder.talk_with_origin('ゆ・・・ゆるさん・・・', 'ドラゴンボール'), "\n"
135
145
  ~~~
136
146
 
137
147
  ### 出力
@@ -151,6 +161,16 @@ print finder.talk_with_origin('やらないか?'), "\n"
151
161
  アーッ!
152
162
  阿部さん「アーッ!」
153
163
  阿部さん「アーッ!」 from [くそみそテクニック]
164
+ フリーザ「ぜったいにゆるさんぞ虫ケラども!!!」 from [ドラゴンボール]
165
+ 山田 太郎「ぜったいにゆるさんぞ虫ケラども!!!」 from [珍遊記]
166
+ フリーザ「ぜったいにゆるさんぞ虫ケラども!!!」 from [ドラゴンボール]
167
+ !!! ver 0.0.2. 原典フィルタ !!!
168
+ 阿:オス 吽:オラ悟空 発言者:孫悟空 原典:ドラゴンボール, ユーザー定義:false
169
+ 阿:今度は木っ端微塵にしてやる。あの地球人のように 吽:クリリンのことか───────っ!!!!! 発言者:孫悟空 原典:ドラゴンボール, ユーザー定義:false
170
+ 阿:ゆ・・・ゆるさん・・・ 吽:ぜったいにゆるさんぞ虫ケラども!!! 発言者:フリーザ 原典:ドラゴンボール, ユーザー定義:false
171
+ フリーザ「ぜったいにゆるさんぞ虫ケラども!!!」 from [ドラゴンボール]
172
+ フリーザ「ぜったいにゆるさんぞ虫ケラども!!!」 from [ドラゴンボール]
173
+ フリーザ「ぜったいにゆるさんぞ虫ケラども!!!」 from [ドラゴンボール]
154
174
  ~~~
155
175
 
156
176
  ## デフォルト阿吽メッセージへのプルリク
@@ -161,6 +181,7 @@ merge か reject かは独断と偏見で行います。
161
181
  また元ネタの説明は出来る限り日本語でお願いします。
162
182
 
163
183
  ## History
184
+ * version 0.0.2 : 原典絞込オプション追加(CLIは未対応)
164
185
  * version 0.0.1 : First release.
165
186
 
166
187
  ## Contributing
@@ -1,24 +1,24 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'aun/version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = 'aun'
8
- spec.version = Aun::VERSION
9
- spec.authors = ['tbpgr']
10
- spec.email = ['tbpgr@tbpgr.jp']
11
- spec.summary = %q(A-Un)
12
- spec.description = %q(A-Un)
13
- spec.homepage = 'https://github.com/tbpgr/aun'
14
- spec.license = 'MIT'
15
-
16
- spec.files = `git ls-files -z`.split("\x0")
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ['lib']
20
-
21
- spec.add_development_dependency 'bundler', '~> 1.6'
22
- spec.add_development_dependency 'rake', '~> 10.0'
23
- spec.add_development_dependency 'rspec'
24
- end
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'aun/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'aun'
8
+ spec.version = Aun::VERSION
9
+ spec.authors = ['tbpgr']
10
+ spec.email = ['tbpgr@tbpgr.jp']
11
+ spec.summary = 'A-Un'
12
+ spec.description = 'A-Un'
13
+ spec.homepage = 'https://github.com/tbpgr/aun'
14
+ spec.license = 'MIT'
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ['lib']
20
+
21
+ spec.add_development_dependency 'bundler', '~> 1.6'
22
+ spec.add_development_dependency 'rake', '~> 10.0'
23
+ spec.add_development_dependency 'rspec'
24
+ end
data/bin/aun CHANGED
@@ -1,68 +1,68 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
-
4
- require 'aun_core'
5
- require 'aun/version'
6
- require 'thor'
7
-
8
- module Aun
9
- # = Aun CLI
10
- class CLI < Thor
11
- class_option :help, type: :boolean, aliases: '-h', desc: 'help message.'
12
- class_option :version, type: :boolean, desc: 'version'
13
-
14
- desc 'init', 'Generate Aundefinition.csv template'
15
- def init
16
- Aun::DefinitionManager.new.init
17
- exit(true)
18
- rescue
19
- exit(false)
20
- end
21
-
22
- desc 'inspect_all', 'inspect_all'
23
- def inspect_all
24
- call_finder_no_arity(:inspect_all)
25
- end
26
-
27
- %i(talk owner_talk talk_with_origin inspect).each do |m|
28
- desc m.to_s, m.to_s
29
- define_method m do |key|
30
- call_finder_1_arity(m, key)
31
- end
32
- end
33
-
34
- desc 'version', 'version'
35
- def version
36
- p Aun::VERSION
37
- end
38
-
39
- private
40
-
41
- def call_finder_no_arity(m)
42
- af = get_finder_instance
43
- puts af.send(m)
44
- exit(true)
45
- rescue => e
46
- STDERR.puts(e.backtrace)
47
- exit(false)
48
- end
49
-
50
- def call_finder_1_arity(m, key)
51
- af = get_finder_instance
52
- puts af.send(m, key.encode('utf-8'))
53
- exit(true)
54
- rescue => e
55
- STDERR.puts(e.backtrace)
56
- exit(false)
57
- end
58
-
59
- def get_finder_instance
60
- user_definition = Aun::DefinitionManager.new.load_user_definition
61
- af = Aun::Finder.new
62
- af.add_messages(user_definition)
63
- af
64
- end
65
- end
66
- end
67
-
68
- Aun::CLI.start(ARGV)
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ require 'aun_core'
5
+ require 'aun/version'
6
+ require 'thor'
7
+
8
+ module Aun
9
+ # = Aun CLI
10
+ class CLI < Thor
11
+ class_option :help, type: :boolean, aliases: '-h', desc: 'help message.'
12
+ class_option :version, type: :boolean, desc: 'version'
13
+
14
+ desc 'init', 'Generate Aundefinition.csv template'
15
+ def init
16
+ Aun::DefinitionManager.new.init
17
+ exit(true)
18
+ rescue
19
+ exit(false)
20
+ end
21
+
22
+ desc 'inspect_all', 'inspect_all'
23
+ def inspect_all
24
+ call_finder_no_arity(:inspect_all)
25
+ end
26
+
27
+ %i(talk owner_talk talk_with_origin inspect).each do |m|
28
+ desc m.to_s, m.to_s
29
+ define_method m do |key|
30
+ call_finder_1_arity(m, key)
31
+ end
32
+ end
33
+
34
+ desc 'version', 'version'
35
+ def version
36
+ p Aun::VERSION
37
+ end
38
+
39
+ private
40
+
41
+ def call_finder_no_arity(m)
42
+ af = get_finder_instance
43
+ puts af.send(m)
44
+ exit(true)
45
+ rescue => e
46
+ STDERR.puts(e.backtrace)
47
+ exit(false)
48
+ end
49
+
50
+ def call_finder_1_arity(m, key)
51
+ af = get_finder_instance
52
+ puts af.send(m, key.encode('utf-8'))
53
+ exit(true)
54
+ rescue => e
55
+ STDERR.puts(e.backtrace)
56
+ exit(false)
57
+ end
58
+
59
+ def get_finder_instance
60
+ user_definition = Aun::DefinitionManager.new.load_user_definition
61
+ af = Aun::Finder.new
62
+ af.add_messages(user_definition)
63
+ af
64
+ end
65
+ end
66
+ end
67
+
68
+ Aun::CLI.start(ARGV)
@@ -1,10 +1,17 @@
1
1
  # encoding: utf-8
2
2
  module Aun
3
+ # rubocop:disable LineLength
3
4
  module DefaultMessages
4
5
  MESSAGES = [
5
6
  Message.new('君名前は?', '田原年彦', owner: '田原年彦', origin: '行け!稲中卓球部'),
6
7
  Message.new('山', '川'),
7
8
  Message.new('ぬるぽ', 'ガッ'),
9
+ Message.new('もうおわりだ', '戸棚のウラはネズミの卵でいっぱいだー!', owner: '二階堂昭夫', origin: '動物のお医者さん'),
10
+ Message.new('オス', 'オラ悟空', owner: '孫悟空', origin: 'ドラゴンボール'),
11
+ Message.new('今度は木っ端微塵にしてやる。あの地球人のように', 'クリリンのことか───────っ!!!!!', owner: '孫悟空', origin: 'ドラゴンボール'),
12
+ Message.new('ゆ・・・ゆるさん・・・', 'ぜったいにゆるさんぞ虫ケラども!!!', owner: 'フリーザ', origin: 'ドラゴンボール'),
13
+ Message.new('ゆ・・・ゆるさん・・・', 'ぜったいにゆるさんぞ虫ケラども!!!', owner: '山田 太郎', origin: '珍遊記')
8
14
  ]
9
15
  end
10
16
  end
17
+ # rubocop:enable LineLength
@@ -8,22 +8,36 @@ module Aun
8
8
  阿(例:海賊王に),吽(例:俺はなる),発言者(モンキー・D・ルフィ※不明の場合は空欄に),原典(One Piece※不明の場合は空欄に)
9
9
  EOS
10
10
 
11
+ module AunDefinitionColumns
12
+ A = 0
13
+ UN = 1
14
+ OWNER = 2
15
+ ORIGIN = 3
16
+ end
17
+
11
18
  def init
12
19
  File.open(AUNDEFINITION_FILE, 'w:UTF-8') do |f|
13
20
  f.puts AUNDEFINITION_TEMPLATE
14
21
  end
15
22
  end
16
23
 
24
+ # rubocop:disable MethodLength
25
+
26
+ # load_user_definition
17
27
  def load_user_definition
18
28
  return [] unless File.exist?(AUNDEFINITION_FILE)
19
29
  memo = []
20
30
  CSV.foreach(AUNDEFINITION_FILE, encoding: 'utf-8') do |row|
21
- owner = row[2]
22
- origin = row[3]
23
- memo << Aun::Message.new(row[0], row[1], owner: row[2], origin: origin, user_defined: true)
31
+ owner = row[AunDefinitionColumns::OWNER]
32
+ origin = row[AunDefinitionColumns::ORIGIN]
33
+ memo << Aun::Message.new(
34
+ row[AunDefinitionColumns::A],
35
+ row[AunDefinitionColumns::UN],
36
+ owner: owner, origin: origin, user_defined: true)
24
37
  end
25
38
  memo
26
39
  end
40
+ # rubocop:enable MethodLength
27
41
 
28
42
  private
29
43
  def empty_to_unknown(target)
@@ -9,18 +9,30 @@ module Aun
9
9
  end
10
10
 
11
11
  %i(talk owner_talk talk_with_origin inspect).each do |m|
12
- define_method m do |key|
13
- message = @messages.select { |e|e.a == key }
12
+ define_method m do |key, origin_filter = ''|
13
+ message =
14
+ if origin_filter && origin_filter.empty?
15
+ @messages.select { |e|e.a == key }
16
+ else
17
+ @messages.select { |e|e.origin == origin_filter }
18
+ .select { |e|e.a == key }
19
+ end
14
20
  message.empty? ? '' : message.sample.send(m)
15
21
  end
16
22
  end
17
23
 
18
- def inspect_all
19
- @messages.map(&:inspect).join("\n")
24
+ def inspect_all(origin_filter = '')
25
+ if origin_filter && origin_filter.empty?
26
+ @messages.map(&:inspect).join("\n")
27
+ else
28
+ @messages.select { |e|e.origin == origin_filter }
29
+ .map(&:inspect).join("\n")
30
+ end
20
31
  end
21
32
 
22
- def aun_definitions
23
- @messages
33
+ def aun_definitions(origin_filter = '')
34
+ return @messages if origin_filter.empty?
35
+ @messages.select { |e|e.origin == origin_filter }
24
36
  end
25
37
 
26
38
  def add_messages(messages = [])
@@ -1,3 +1,3 @@
1
- module Aun
2
- VERSION = '0.0.1'
3
- end
1
+ module Aun
2
+ VERSION = '0.0.2'
3
+ end
@@ -1,315 +1,394 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
- require 'aun/finder'
4
- require 'aun/default_messages'
5
-
6
- describe Aun::Finder do
7
- context :talk do
8
- cases = [
9
- {
10
- case_no: 1,
11
- case_title: 'valid key',
12
- key: '君名前は?',
13
- expected: '田原年彦'
14
- },
15
- {
16
- case_no: 2,
17
- case_title: 'not exist key',
18
- key: '山んば',
19
- expected: ''
20
- }
21
- ]
22
-
23
- cases.each do |c|
24
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
25
- begin
26
- case_before c
27
-
28
- # -- given --
29
- aun_message = Aun::Finder.new
30
-
31
- # -- when --
32
- actual = aun_message.talk(c[:key])
33
-
34
- # -- then --
35
- expect(actual).to eq(c[:expected])
36
- ensure
37
- case_after c
38
- end
39
- end
40
-
41
- def case_before(c)
42
- # implement each case before
43
- end
44
-
45
- def case_after(c)
46
- # implement each case after
47
- end
48
- end
49
- end
50
-
51
- context :owner_talk do
52
- cases = [
53
- {
54
- case_no: 1,
55
- case_title: 'valid key',
56
- key: '君名前は?',
57
- expected: '田原年彦「田原年彦」'
58
- },
59
- {
60
- case_no: 2,
61
- case_title: 'not exist key',
62
- key: '山んば',
63
- expected: ''
64
- }
65
- ]
66
-
67
- cases.each do |c|
68
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
69
- begin
70
- case_before c
71
-
72
- # -- given --
73
- aun_message = Aun::Finder.new
74
-
75
- # -- when --
76
- actual = aun_message.owner_talk(c[:key])
77
-
78
- # -- then --
79
- expect(actual).to eq(c[:expected])
80
- ensure
81
- case_after c
82
- end
83
- end
84
-
85
- def case_before(c)
86
- # implement each case before
87
- end
88
-
89
- def case_after(c)
90
- # implement each case after
91
- end
92
- end
93
- end
94
-
95
- context :talk_with_origin do
96
- cases = [
97
- {
98
- case_no: 1,
99
- case_title: 'valid key',
100
- key: '君名前は?',
101
- expected: '田原年彦「田原年彦」 from [行け!稲中卓球部]'
102
- },
103
- {
104
- case_no: 2,
105
- case_title: 'not exist key',
106
- key: '山んば',
107
- expected: ''
108
- }
109
- ]
110
-
111
- cases.each do |c|
112
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
113
- begin
114
- case_before c
115
-
116
- # -- given --
117
- aun_message = Aun::Finder.new
118
-
119
- # -- when --
120
- actual = aun_message.talk_with_origin(c[:key])
121
-
122
- # -- then --
123
- expect(actual).to eq(c[:expected])
124
- ensure
125
- case_after c
126
- end
127
- end
128
-
129
- def case_before(c)
130
- # implement each case before
131
- end
132
-
133
- def case_after(c)
134
- # implement each case after
135
- end
136
- end
137
- end
138
-
139
- context :inspect do
140
- cases = [
141
- {
142
- case_no: 1,
143
- case_title: 'valid key',
144
- key: '君名前は?',
145
- expected: "阿:君名前は?\t吽:田原年彦\t発言者:田原年彦\t原典:行け!稲中卓球部,\tユーザー定義:false"
146
- },
147
- {
148
- case_no: 2,
149
- case_title: 'not exist key',
150
- key: '山んば',
151
- expected: ''
152
- }
153
- ]
154
-
155
- cases.each do |c|
156
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
157
- begin
158
- case_before c
159
-
160
- # -- given --
161
- aun_message = Aun::Finder.new
162
-
163
- # -- when --
164
- actual = aun_message.inspect(c[:key])
165
-
166
- # -- then --
167
- expect(actual).to eq(c[:expected])
168
- ensure
169
- case_after c
170
- end
171
- end
172
-
173
- def case_before(c)
174
- # implement each case before
175
- end
176
-
177
- def case_after(c)
178
- # implement each case after
179
- end
180
- end
181
- end
182
-
183
- context :inspect_all do
184
- cases = [
185
- {
186
- case_no: 1,
187
- case_title: 'valid key',
188
- expected: <<-EOS
189
- 阿:君名前は?\t吽:田原年彦\t発言者:田原年彦\t原典:行け!稲中卓球部,\tユーザー定義:false
190
- 阿:山\t吽:川\t発言者:unknown\t原典:unknown,\tユーザー定義:false
191
- 阿:ぬるぽ\t吽:ガッ\t発言者:unknown\t原典:unknown,\tユーザー定義:false
192
- EOS
193
- }
194
- ]
195
-
196
- cases.each do |c|
197
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
198
- begin
199
- case_before c
200
-
201
- # -- given --
202
- aun_message = Aun::Finder.new
203
-
204
- # -- when --
205
- actual = aun_message.inspect_all
206
-
207
- # -- then --
208
- expect(actual).to eq(c[:expected].chomp)
209
- ensure
210
- case_after c
211
- end
212
- end
213
-
214
- def case_before(c)
215
- # implement each case before
216
- end
217
-
218
- def case_after(c)
219
- # implement each case after
220
- end
221
- end
222
- end
223
-
224
- context :aun_definitions do
225
- cases = [
226
- {
227
- case_no: 1,
228
- case_title: 'valid case',
229
- expected: Aun::DefaultMessages::MESSAGES
230
- }
231
- ]
232
-
233
- cases.each do |c|
234
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
235
- begin
236
- case_before c
237
-
238
- # -- given --
239
- aun_message = Aun::Finder.new
240
-
241
- # -- when --
242
- # TODO: implement execute code
243
- actual = aun_message.aun_definitions
244
-
245
- # -- then --
246
- expect(actual).to eq(c[:expected])
247
- ensure
248
- case_after c
249
- end
250
- end
251
-
252
- def case_before(c)
253
- # implement each case before
254
- end
255
-
256
- def case_after(c)
257
- # implement each case after
258
- end
259
- end
260
- end
261
-
262
- context :add_messages do
263
- ADDITIONAL_MESSAGES = [
264
- Aun::Message.new(
265
- 'んーばばんばんば',
266
- 'めらっさめらっさ',
267
- owner: 'パプワくん',
268
- origin: '南国少年パプワくん',
269
- user_defined: true
270
- ),
271
- Aun::Message.new(
272
- 'ツー',
273
- 'カー',
274
- user_defined: true
275
- )
276
- ]
277
-
278
- cases = [
279
- {
280
- case_no: 1,
281
- case_title: 'case_title',
282
- messages: ADDITIONAL_MESSAGES,
283
- expected: Aun::DefaultMessages::MESSAGES + ADDITIONAL_MESSAGES
284
- },
285
- ]
286
-
287
- cases.each do |c|
288
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
289
- begin
290
- case_before c
291
-
292
- # -- given --
293
- aun_message = Aun::Finder.new
294
-
295
- # -- when --
296
- aun_message.add_messages(c[:messages])
297
- actual = aun_message.messages
298
-
299
- # -- then --
300
- expect(actual).to eq(c[:expected])
301
- ensure
302
- case_after c
303
- end
304
- end
305
-
306
- def case_before(c)
307
- # implement each case before
308
- end
309
-
310
- def case_after(c)
311
- # implement each case after
312
- end
313
- end
314
- end
315
- end
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ require 'aun/finder'
4
+ require 'aun/default_messages'
5
+
6
+ describe Aun::Finder do
7
+ context :talk do
8
+ cases = [
9
+ {
10
+ case_no: 1,
11
+ case_title: 'valid key',
12
+ key: '君名前は?',
13
+ expected: '田原年彦'
14
+ },
15
+ {
16
+ case_no: 2,
17
+ case_title: 'not exist key',
18
+ key: '山んば',
19
+ expected: ''
20
+ },
21
+ {
22
+ case_no: 3,
23
+ case_title: 'valid key with origin filter',
24
+ key: 'ゆ・・・ゆるさん・・・',
25
+ origin_filter: 'ドラゴンボール',
26
+ expected: 'ぜったいにゆるさんぞ虫ケラども!!!'
27
+ }
28
+ ]
29
+
30
+ cases.each do |c|
31
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
32
+ begin
33
+ case_before c
34
+
35
+ # -- given --
36
+ aun_message = Aun::Finder.new
37
+
38
+ # -- when --
39
+ actual =
40
+ if c[:origin_filter]
41
+ aun_message.talk(c[:key], c[:origin_filter])
42
+ else
43
+ aun_message.talk(c[:key])
44
+ end
45
+
46
+ # -- then --
47
+ expect(actual).to eq(c[:expected])
48
+ ensure
49
+ case_after c
50
+ end
51
+ end
52
+
53
+ def case_before(c)
54
+ # implement each case before
55
+ end
56
+
57
+ def case_after(c)
58
+ # implement each case after
59
+ end
60
+ end
61
+ end
62
+
63
+ context :owner_talk do
64
+ cases = [
65
+ {
66
+ case_no: 1,
67
+ case_title: 'valid key',
68
+ key: '君名前は?',
69
+ expected: '田原年彦「田原年彦」'
70
+ },
71
+ {
72
+ case_no: 2,
73
+ case_title: 'not exist key',
74
+ key: '山んば',
75
+ expected: ''
76
+ },
77
+ {
78
+ case_no: 3,
79
+ case_title: 'valid key with origin filter',
80
+ key: 'ゆ・・・ゆるさん・・・',
81
+ origin_filter: 'ドラゴンボール',
82
+ expected: 'フリーザ「ぜったいにゆるさんぞ虫ケラども!!!」'
83
+ }
84
+ ]
85
+
86
+ cases.each do |c|
87
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
88
+ begin
89
+ case_before c
90
+
91
+ # -- given --
92
+ aun_message = Aun::Finder.new
93
+
94
+ # -- when --
95
+ actual =
96
+ if c[:origin_filter]
97
+ aun_message.owner_talk(c[:key], c[:origin_filter])
98
+ else
99
+ aun_message.owner_talk(c[:key])
100
+ end
101
+
102
+ # -- then --
103
+ expect(actual).to eq(c[:expected])
104
+ ensure
105
+ case_after c
106
+ end
107
+ end
108
+
109
+ def case_before(c)
110
+ # implement each case before
111
+ end
112
+
113
+ def case_after(c)
114
+ # implement each case after
115
+ end
116
+ end
117
+ end
118
+
119
+ context :talk_with_origin do
120
+ cases = [
121
+ {
122
+ case_no: 1,
123
+ case_title: 'valid key',
124
+ key: '君名前は?',
125
+ expected: '田原年彦「田原年彦」 from [行け!稲中卓球部]'
126
+ },
127
+ {
128
+ case_no: 2,
129
+ case_title: 'not exist key',
130
+ key: '山んば',
131
+ expected: ''
132
+ },
133
+ {
134
+ case_no: 3,
135
+ case_title: 'valid key with origin filter',
136
+ key: 'ゆ・・・ゆるさん・・・',
137
+ origin_filter: 'ドラゴンボール',
138
+ expected: 'フリーザ「ぜったいにゆるさんぞ虫ケラども!!!」 from [ドラゴンボール]'
139
+ }
140
+ ]
141
+
142
+ cases.each do |c|
143
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
144
+ begin
145
+ case_before c
146
+
147
+ # -- given --
148
+ aun_message = Aun::Finder.new
149
+
150
+ # -- when --
151
+ actual =
152
+ if c[:origin_filter]
153
+ aun_message.talk_with_origin(c[:key], c[:origin_filter])
154
+ else
155
+ aun_message.talk_with_origin(c[:key])
156
+ end
157
+
158
+ # -- then --
159
+ expect(actual).to eq(c[:expected])
160
+ ensure
161
+ case_after c
162
+ end
163
+ end
164
+
165
+ def case_before(c)
166
+ # implement each case before
167
+ end
168
+
169
+ def case_after(c)
170
+ # implement each case after
171
+ end
172
+ end
173
+ end
174
+
175
+ context :inspect do
176
+ cases = [
177
+ {
178
+ case_no: 1,
179
+ case_title: 'valid key',
180
+ key: '君名前は?',
181
+ expected: "阿:君名前は?\t吽:田原年彦\t発言者:田原年彦\t原典:行け!稲中卓球部,\tユーザー定義:false"
182
+ },
183
+ {
184
+ case_no: 2,
185
+ case_title: 'not exist key',
186
+ key: '山んば',
187
+ expected: ''
188
+ },
189
+ {
190
+ case_no: 3,
191
+ case_title: 'valid key with origin filter',
192
+ key: 'ゆ・・・ゆるさん・・・',
193
+ origin_filter: 'ドラゴンボール',
194
+ expected: "阿:ゆ・・・ゆるさん・・・\t吽:ぜったいにゆるさんぞ虫ケラども!!!\t発言者:フリーザ\t原典:ドラゴンボール,\tユーザー定義:false"
195
+ }
196
+ ]
197
+
198
+ cases.each do |c|
199
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
200
+ begin
201
+ case_before c
202
+
203
+ # -- given --
204
+ aun_message = Aun::Finder.new
205
+
206
+ # -- when --
207
+ actual =
208
+ if c[:origin_filter]
209
+ aun_message.inspect(c[:key], c[:origin_filter])
210
+ else
211
+ aun_message.inspect(c[:key])
212
+ end
213
+
214
+ # -- then --
215
+ expect(actual).to eq(c[:expected])
216
+ ensure
217
+ case_after c
218
+ end
219
+ end
220
+
221
+ def case_before(c)
222
+ # implement each case before
223
+ end
224
+
225
+ def case_after(c)
226
+ # implement each case after
227
+ end
228
+ end
229
+ end
230
+
231
+ context :inspect_all do
232
+ cases = [
233
+ {
234
+ case_no: 1,
235
+ case_title: 'valid key',
236
+ expected: <<-EOS
237
+ 阿:君名前は?\t吽:田原年彦\t発言者:田原年彦\t原典:行け!稲中卓球部,\tユーザー定義:false
238
+ 阿:山\t吽:川\t発言者:unknown\t原典:unknown,\tユーザー定義:false
239
+ 阿:ぬるぽ\t吽:ガッ\t発言者:unknown\t原典:unknown,\tユーザー定義:false
240
+ 阿:もうおわりだ\t吽:戸棚のウラはネズミの卵でいっぱいだー!\t発言者:二階堂昭夫\t原典:動物のお医者さん,\tユーザー定義:false
241
+ 阿:オス\t吽:オラ悟空\t発言者:孫悟空\t原典:ドラゴンボール,\tユーザー定義:false
242
+ 阿:今度は木っ端微塵にしてやる。あの地球人のように\t吽:クリリンのことか───────っ!!!!!\t発言者:孫悟空\t原典:ドラゴンボール,\tユーザー定義:false
243
+ 阿:ゆ・・・ゆるさん・・・\t吽:ぜったいにゆるさんぞ虫ケラども!!!\t発言者:フリーザ\t原典:ドラゴンボール,\tユーザー定義:false
244
+ 阿:ゆ・・・ゆるさん・・・\t吽:ぜったいにゆるさんぞ虫ケラども!!!\t発言者:山田 太郎\t原典:珍遊記,\tユーザー定義:false
245
+ EOS
246
+ },
247
+ {
248
+ case_no: 2,
249
+ case_title: 'valid key with origin filter',
250
+ origin_filter: 'ドラゴンボール',
251
+ expected: <<-EOS
252
+ 阿:オス\t吽:オラ悟空\t発言者:孫悟空\t原典:ドラゴンボール,\tユーザー定義:false
253
+ 阿:今度は木っ端微塵にしてやる。あの地球人のように\t吽:クリリンのことか───────っ!!!!!\t発言者:孫悟空\t原典:ドラゴンボール,\tユーザー定義:false
254
+ 阿:ゆ・・・ゆるさん・・・\t吽:ぜったいにゆるさんぞ虫ケラども!!!\t発言者:フリーザ\t原典:ドラゴンボール,\tユーザー定義:false
255
+ EOS
256
+ }
257
+ ]
258
+
259
+ cases.each do |c|
260
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
261
+ begin
262
+ case_before c
263
+
264
+ # -- given --
265
+ aun_message = Aun::Finder.new
266
+
267
+ # -- when --
268
+ actual = aun_message.inspect_all
269
+ actual =
270
+ if c[:origin_filter]
271
+ aun_message.inspect_all(c[:origin_filter])
272
+ else
273
+ aun_message.inspect_all
274
+ end
275
+
276
+ # -- then --
277
+ expect(actual).to eq(c[:expected].chomp)
278
+ ensure
279
+ case_after c
280
+ end
281
+ end
282
+
283
+ def case_before(c)
284
+ # implement each case before
285
+ end
286
+
287
+ def case_after(c)
288
+ # implement each case after
289
+ end
290
+ end
291
+ end
292
+
293
+ context :aun_definitions do
294
+ cases = [
295
+ {
296
+ case_no: 1,
297
+ case_title: 'valid case',
298
+ expected: Aun::DefaultMessages::MESSAGES
299
+ },
300
+ {
301
+ case_no: 1,
302
+ case_title: 'valid case',
303
+ origin_filter: 'ドラゴンボール',
304
+ expected: Aun::DefaultMessages::MESSAGES.select { |e|e.origin == 'ドラゴンボール' }
305
+ },
306
+ ]
307
+
308
+ cases.each do |c|
309
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
310
+ begin
311
+ case_before c
312
+
313
+ # -- given --
314
+ aun_message = Aun::Finder.new
315
+
316
+ # -- when --
317
+ actual =
318
+ if c[:origin_filter]
319
+ aun_message.aun_definitions(c[:origin_filter])
320
+ else
321
+ aun_message.aun_definitions
322
+ end
323
+
324
+ # -- then --
325
+ expect(actual).to eq(c[:expected])
326
+ ensure
327
+ case_after c
328
+ end
329
+ end
330
+
331
+ def case_before(c)
332
+ # implement each case before
333
+ end
334
+
335
+ def case_after(c)
336
+ # implement each case after
337
+ end
338
+ end
339
+ end
340
+
341
+ context :add_messages do
342
+ ADDITIONAL_MESSAGES = [
343
+ Aun::Message.new(
344
+ 'んーばばんばんば',
345
+ 'めらっさめらっさ',
346
+ owner: 'パプワくん',
347
+ origin: '南国少年パプワくん',
348
+ user_defined: true
349
+ ),
350
+ Aun::Message.new(
351
+ 'ツー',
352
+ 'カー',
353
+ user_defined: true
354
+ )
355
+ ]
356
+
357
+ cases = [
358
+ {
359
+ case_no: 1,
360
+ case_title: 'case_title',
361
+ messages: ADDITIONAL_MESSAGES,
362
+ expected: Aun::DefaultMessages::MESSAGES + ADDITIONAL_MESSAGES
363
+ },
364
+ ]
365
+
366
+ cases.each do |c|
367
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
368
+ begin
369
+ case_before c
370
+
371
+ # -- given --
372
+ aun_message = Aun::Finder.new
373
+
374
+ # -- when --
375
+ aun_message.add_messages(c[:messages])
376
+ actual = aun_message.messages
377
+
378
+ # -- then --
379
+ expect(actual).to eq(c[:expected])
380
+ ensure
381
+ case_after c
382
+ end
383
+ end
384
+
385
+ def case_before(c)
386
+ # implement each case before
387
+ end
388
+
389
+ def case_after(c)
390
+ # implement each case after
391
+ end
392
+ end
393
+ end
394
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aun
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - tbpgr
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-04 00:00:00.000000000 Z
11
+ date: 2014-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler