matsuya 0.4.0 → 1.0.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.
- checksums.yaml +4 -4
- data/lib/matsuya.rb +101 -134
- data/lib/matsuya/version.rb +1 -1
- data/matsuya.gemspec +3 -4
- metadata +10 -24
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8f5e33196b50e272eccb688e82cdf5f662e09cf79b3bd23cc9f932d85be3f70f
|
|
4
|
+
data.tar.gz: 732d76c421ad0bc5a784f1288ec0c655b502b057606a3944685b357447d54504
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3569bce0e331758aa4d4774f64219045e3f845c974bbd112fe2d4faa174eddc132e6cc3ed6658ddd58aa71422fe1462c5ce7468882989500d4b8e770774efa87
|
|
7
|
+
data.tar.gz: 10a185d0d0e8743118cc7d9d59e9871bd626f21f09f8a044b35f467c7d3a87120c81c099d9ad9fbf9895df70cc4e4ffa5edbc3396899ffb1893a63cdac896485
|
data/lib/matsuya.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
|
-
|
|
3
|
-
require '
|
|
2
|
+
|
|
3
|
+
require 'matsuya/version'
|
|
4
4
|
require 'set'
|
|
5
5
|
|
|
6
6
|
module Matsuya
|
|
@@ -10,66 +10,65 @@ module Matsuya
|
|
|
10
10
|
# 松屋に実際にあるメニュー。
|
|
11
11
|
# 牛めしのようにプレミアムとそうでないものがある場合は、プレミアムだけを書く
|
|
12
12
|
# オリジナルカレギュウ(プレミアム牛肉使用)も、プレミアムとして扱い、プレミアム牛肉使用と書いていないほうは書かない
|
|
13
|
-
Sample = Set.new([
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
])
|
|
13
|
+
Sample = Set.new([Menu.new(%i[プレミアム 牛 めし], 380),
|
|
14
|
+
Menu.new(%i[ネギ たっぷり プレミアム 旨 辛 ネギ 玉子 牛 めし], 490),
|
|
15
|
+
Menu.new(%i[プレミアム おろし ポン酢 牛 めし], 480),
|
|
16
|
+
Menu.new(%i[味噌漬け トンテキ 牛 めし (国産玉ねぎ使用) + キムチ], 730),
|
|
17
|
+
Menu.new(%i[味噌漬け トンテキ 牛 めし (国産玉ねぎ使用) + 生野菜 + キムチ], 830),
|
|
18
|
+
Menu.new(%i[味噌漬け トンテキ 牛 めし (国産玉ねぎ使用) + とろろ], 730),
|
|
19
|
+
Menu.new(%i[味噌漬け トンテキ 牛 めし (国産玉ねぎ使用) + 生野菜 + とろろ], 830),
|
|
20
|
+
Menu.new(%i[創業 牛 カレー], 490), # 創業ビーフカレー
|
|
21
|
+
Menu.new(%i[創業 牛 カレー + 生野菜], 590),
|
|
22
|
+
Menu.new(%i[創業 プレミアム 牛 カレー 牛], 720),
|
|
23
|
+
Menu.new(%i[創業 牛 カレー 牛], 660),
|
|
24
|
+
Menu.new(%i[創業 ハンバーグ 牛 カレー], 720),
|
|
25
|
+
Menu.new(%i[味噌漬け トンテキ 丼 + キムチ], 730),
|
|
26
|
+
Menu.new(%i[味噌漬け トンテキ 丼 + とろろ], 730),
|
|
27
|
+
Menu.new(%i[味噌漬け トンテキ 丼 + 生野菜 + キムチ], 830),
|
|
28
|
+
Menu.new(%i[味噌漬け トンテキ 丼 + 生野菜 + とろろ], 830),
|
|
29
|
+
Menu.new(%i[豚 キムチ 丼], 650),
|
|
30
|
+
Menu.new(%i[キムチ カルビ 丼], 500),
|
|
31
|
+
Menu.new(%i[ネギ たっぷり ネギ 塩 豚 肩ロース 丼], 500),
|
|
32
|
+
Menu.new(%i[ビビンバ 丼], 500),
|
|
33
|
+
Menu.new(%i[まぐろ 丼 6枚盛], 730),
|
|
34
|
+
Menu.new(%i[まぐろ 丼 大漁12枚盛], 1000),
|
|
35
|
+
Menu.new(%i[海老 チリ ソース 定食], 730),
|
|
36
|
+
Menu.new(%i[海老 チリ ソース 定食 + ポテトサラダ], 790),
|
|
37
|
+
Menu.new(%i[豚 キムチ 定食], 730),
|
|
38
|
+
Menu.new(%i[牛 焼肉 定食], 600),
|
|
39
|
+
Menu.new(%i[カルビ 焼肉 定食], 660),
|
|
40
|
+
Menu.new(%i[豚 肩ロース 豚 焼肉定食], 600),
|
|
41
|
+
Menu.new(%i[豚 肩ロース 生姜焼 定食], 660),
|
|
42
|
+
Menu.new(%i[ブラウン ソース ハンバーグ 定食], 600),
|
|
43
|
+
Menu.new(%i[ブラウン ソース 玉子 ハンバーグ 定食], 680),
|
|
44
|
+
Menu.new(%i[プレミアム 牛 皿 + 牛 焼肉], 730),
|
|
45
|
+
Menu.new(%i[プレミアム 牛 皿 + 牛 焼肉 + 生野菜], 830),
|
|
46
|
+
Menu.new(%i[プレミアム 牛 皿 + 豚 焼肉], 730),
|
|
47
|
+
Menu.new(%i[プレミアム 牛 皿 + 豚 焼肉 + 生野菜], 830),
|
|
48
|
+
Menu.new(%i[プレミアム 牛 皿 + ブラウン ソース ハンバーグ], 730),
|
|
49
|
+
Menu.new(%i[プレミアム 牛 皿 + ブラウン ソース ハンバーグ + 生野菜], 830),
|
|
50
|
+
Menu.new(%i[プレミアム 牛 皿 + 焼鮭], 730),
|
|
51
|
+
Menu.new(%i[プレミアム 牛 皿 + 焼鮭 生野菜], 830),
|
|
52
|
+
Menu.new(%i[プレミアム 牛 皿 + カルビ 焼肉], 790),
|
|
53
|
+
Menu.new(%i[プレミアム 牛 皿 + カルビ 焼肉 + 生野菜], 890),
|
|
54
|
+
Menu.new(%i[プレミアム 牛 皿 + 豚 生姜焼], 790),
|
|
55
|
+
Menu.new(%i[プレミアム 牛 皿 + 豚 生姜焼 + 生野菜], 890),
|
|
56
|
+
Menu.new(%i[おこさま プレミアム 牛 めし プレート], 390),
|
|
57
|
+
Menu.new(%i[おこさま 牛 めし プレート], 390),
|
|
58
|
+
Menu.new(%i[おこさま カレー プレート], 390),
|
|
59
|
+
Menu.new(%i[+ おもちゃ], 200),
|
|
60
|
+
Menu.new(%i[りんご ジュース], 100),
|
|
61
|
+
Menu.new(%i[ぶっかけ うどん], 320),
|
|
62
|
+
Menu.new(%i[ぶっかけ うどん + ミニ プレミアム 牛 めし], 620),
|
|
63
|
+
Menu.new(%i[ぶっかけ うどん + ミニ 創業 カレー], 620),
|
|
64
|
+
Menu.new(%i[ぶっかけ とろろ 玉子 うどん], 400),
|
|
65
|
+
Menu.new(%i[ぶっかけ とろろ 玉子 うどん + ミニ プレミアム 牛 めし], 700),
|
|
66
|
+
Menu.new(%i[ぶっかけ とろろ 玉子 うどん + ミニ 創業 カレー], 700)])
|
|
68
67
|
|
|
69
68
|
# 松屋の朝定食
|
|
70
|
-
Morning = Set.new([
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
Morning = Set.new([%i[定番 朝 定食],
|
|
70
|
+
%i[焼鮭 定食],
|
|
71
|
+
%i[ソーセージ エッグ 定食]])
|
|
73
72
|
|
|
74
73
|
# 松屋ネットワーク
|
|
75
74
|
NetworkNode = Struct.new(:node, :follow) do
|
|
@@ -78,27 +77,24 @@ module Matsuya
|
|
|
78
77
|
end
|
|
79
78
|
end
|
|
80
79
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
Sample.each do |menu|
|
|
91
|
-
[:begin, *menu.pattern, menu.price].each_cons(2) do |current, follow|
|
|
92
|
-
node = dic[current] ||= NetworkNode.new(current, [])
|
|
93
|
-
if follow.is_a? Symbol
|
|
94
|
-
node.follow << dic[follow] ||= NetworkNode.new(follow, [])
|
|
95
|
-
else
|
|
96
|
-
node.follow << follow
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
dic.values
|
|
80
|
+
dic = { begin: NetworkNode.new(:begin, []) }
|
|
81
|
+
Sample.each do |menu|
|
|
82
|
+
[:begin, *menu.pattern, menu.price].each_cons(2) do |current, follow|
|
|
83
|
+
node = dic[current] ||= NetworkNode.new(current, [])
|
|
84
|
+
node.follow << if follow.is_a? Symbol
|
|
85
|
+
dic[follow] ||= NetworkNode.new(follow, [])
|
|
86
|
+
else
|
|
87
|
+
follow
|
|
88
|
+
end
|
|
101
89
|
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# 松屋ネットワークを構築し、始点を返す。
|
|
93
|
+
NETWORK = dic.values
|
|
94
|
+
|
|
95
|
+
class << self
|
|
96
|
+
# 互換性のため
|
|
97
|
+
def network = NETWORK
|
|
102
98
|
|
|
103
99
|
# お客様に提供する商品を作る。私は接客は不得意なので、ランダムなものが出てくる。
|
|
104
100
|
# おかの値が1に近づくほど狂った商品が出てくる。
|
|
@@ -109,11 +105,11 @@ module Matsuya
|
|
|
109
105
|
# Matsuya::NetworkNode 再帰呼出し用。省略する。
|
|
110
106
|
# ==== Return
|
|
111
107
|
# Array 材料を並べた配列
|
|
112
|
-
def generate(okano: 0.1, current:
|
|
108
|
+
def generate(okano: 0.1, current: NETWORK.find { |n| n.node == :begin })
|
|
113
109
|
if current.is_a? NetworkNode
|
|
114
110
|
nex = current.follow.sample
|
|
115
|
-
if nex.is_a?(NetworkNode)
|
|
116
|
-
[current.node, *generate(okano: okano, current:
|
|
111
|
+
if nex.is_a?(NetworkNode) && (rand < okano)
|
|
112
|
+
[current.node, *generate(okano: okano, current: NETWORK.sample)]
|
|
117
113
|
else
|
|
118
114
|
[current.node, *generate(okano: okano, current: nex)]
|
|
119
115
|
end
|
|
@@ -122,75 +118,46 @@ module Matsuya
|
|
|
122
118
|
|
|
123
119
|
# 材料を選択したら釜に入れてぐーるぐーる。
|
|
124
120
|
# キムカル丼のように、『キムチ+カルビ』がキムカルに変化するなど、松屋活用を考慮して
|
|
125
|
-
# Matsuya.generate
|
|
121
|
+
# Matsuya.generate の戻り値を加工する
|
|
126
122
|
# ==== Args
|
|
127
123
|
# [dish] Array 現在の皿の状態
|
|
128
124
|
# ==== Return
|
|
129
|
-
# String できたー!どの特性を残そう?
|
|
125
|
+
# Array<String> できたー!どの特性を残そう?
|
|
130
126
|
def preparation(dish)
|
|
131
|
-
|
|
132
|
-
|
|
127
|
+
case dish
|
|
128
|
+
in *head, :+, *tail
|
|
133
129
|
[head, :' ', tail, :セット]
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
with(Egison::List.(*_head, :キムチ, :カルビ, *_tail)) do
|
|
130
|
+
in *head, :キムチ, :カルビ, *tail
|
|
137
131
|
[head, :キムカル, tail]
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
with(Egison::List.(*_head, :創業, :牛, *_tail)) do
|
|
132
|
+
in *head, :創業, :牛, *tail
|
|
141
133
|
[head, :創業ビーフ, tail]
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
with(Egison::List.(*_head, :創業, :プレミアム, :牛, *_tail)) do
|
|
134
|
+
in *head, :創業, :プレミアム, :牛, *tail
|
|
145
135
|
[head, :創業プレミアムビーフ, tail]
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
with(Egison::List.(*_head, :牛, :カレー, *_tail)) do
|
|
136
|
+
in *head, :牛, :カレー, *tail
|
|
149
137
|
[head, :ビーフカレー, tail]
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
with(Egison::List.(*_head, :ビビンバ, :丼, *_tail)) do
|
|
138
|
+
in *head, :ビビンバ, :丼, *tail
|
|
153
139
|
[head, :ビビン丼, tail]
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
with(Egison::List.(*_head, :海老, :チリ, *_tail)) do
|
|
140
|
+
in *head, :海老, :チリ, *tail
|
|
157
141
|
[head, :海老のチリ, tail]
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
with(Egison::List.(*_head, *%i[豚 肩ロース 豚 焼肉定食], *_tail)) do
|
|
142
|
+
in *head, :豚, :肩ロース, :豚, :焼肉定食, *tail
|
|
161
143
|
[head, :豚, :肩ロース, :の, :豚, :焼肉定食, tail]
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
with(Egison::List.(*_head, *%i[豚 肩ロース 生姜焼 定食], *_tail)) do
|
|
144
|
+
in *head, :豚, :肩ロース, :生姜焼, :定食, *tail
|
|
165
145
|
[head, :豚, :肩ロース, :の, :生姜焼, :定食, tail]
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
with(Egison::List.(*_head, :玉子, :ハンバーグ, *_tail)) do
|
|
146
|
+
in *head, :玉子, :ハンバーグ, *tail
|
|
169
147
|
[head, :エッグ, :ハンバーグ, tail]
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
with(Egison::List.(*_head, :ネギ, :玉子, *_tail)) do
|
|
148
|
+
in *head, :ネギ, :玉子, *tail
|
|
173
149
|
[head, :ネギたま, tail]
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
with(Egison::List.(*_head, :とろろ, :玉子, *_tail)) do
|
|
150
|
+
in *head, :とろろ, :玉子, *tail
|
|
177
151
|
[head, :とろたま, tail]
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
with(Egison::List.(*_head, :カレー, :牛, *_tail)) do
|
|
152
|
+
in *head, :カレー, :牛, *tail
|
|
181
153
|
[head, :カレギュウ, tail]
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
with(Egison::List.(*_head, :ハンバーグ, :皿, *_tail)) do
|
|
154
|
+
in *head, :ハンバーグ, :皿, *tail
|
|
185
155
|
[head, :バーグディッシュ, tail]
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
end
|
|
156
|
+
else
|
|
157
|
+
dish
|
|
158
|
+
end.flat_map do |node|
|
|
159
|
+
if node.is_a? Array then preparation(node) else node end
|
|
191
160
|
end
|
|
192
|
-
.map{|node| if node.is_a? Array then preparation(node) else node end }
|
|
193
|
-
.flatten
|
|
194
161
|
end
|
|
195
162
|
|
|
196
163
|
# 商品を注文し、商品を受け取る
|
|
@@ -200,7 +167,7 @@ module Matsuya
|
|
|
200
167
|
# ==== Return
|
|
201
168
|
# String 商品名
|
|
202
169
|
def order(okano: 0.1)
|
|
203
|
-
preparation(generate(okano: okano).reject{
|
|
170
|
+
preparation(generate(okano: okano).reject { _1 == :begin }).join
|
|
204
171
|
end
|
|
205
172
|
end
|
|
206
173
|
end
|
data/lib/matsuya/version.rb
CHANGED
data/matsuya.gemspec
CHANGED
|
@@ -18,9 +18,8 @@ Gem::Specification.new do |spec|
|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
19
|
spec.require_paths = ["lib"]
|
|
20
20
|
|
|
21
|
-
spec.required_ruby_version = '>=
|
|
21
|
+
spec.required_ruby_version = '>= 3.0'
|
|
22
22
|
|
|
23
|
-
spec.add_development_dependency "bundler"
|
|
24
|
-
spec.add_development_dependency "rake"
|
|
25
|
-
spec.add_dependency "egison", "~> 1.0"
|
|
23
|
+
spec.add_development_dependency "bundler"
|
|
24
|
+
spec.add_development_dependency "rake"
|
|
26
25
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: matsuya
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 1.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Toshiaki Asai
|
|
@@ -14,44 +14,30 @@ dependencies:
|
|
|
14
14
|
name: bundler
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "
|
|
17
|
+
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
19
|
+
version: '0'
|
|
20
20
|
type: :development
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- - "
|
|
24
|
+
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
26
|
+
version: '0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: rake
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- - "
|
|
31
|
+
- - ">="
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '
|
|
33
|
+
version: '0'
|
|
34
34
|
type: :development
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- - "
|
|
38
|
+
- - ">="
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: egison
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - "~>"
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '1.0'
|
|
48
|
-
type: :runtime
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - "~>"
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '1.0'
|
|
40
|
+
version: '0'
|
|
55
41
|
description: Generate Okanic Matsuya food.
|
|
56
42
|
email:
|
|
57
43
|
- toshi.alternative@gmail.com
|
|
@@ -81,7 +67,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
81
67
|
requirements:
|
|
82
68
|
- - ">="
|
|
83
69
|
- !ruby/object:Gem::Version
|
|
84
|
-
version: '
|
|
70
|
+
version: '3.0'
|
|
85
71
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
86
72
|
requirements:
|
|
87
73
|
- - ">="
|