toji 2.3.0 → 2.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/example/calendar.ipynb +6 -6
- data/example/calendar.yaml +6 -6
- data/example/example_core.rb +3 -47
- data/example/koji_making.rb +1 -1
- data/example/moromi.rb +2 -2
- data/example/recipe.rb +17 -10
- data/example/shubo.rb +1 -1
- data/lib/toji/brew/base.rb +0 -6
- data/lib/toji/brew/graph/ab.rb +3 -3
- data/lib/toji/brew/graph/progress.rb +6 -6
- data/lib/toji/brew/wrapped_state.rb +0 -27
- data/lib/toji/calendar.rb +1 -1
- data/lib/toji/product.rb +3 -3
- data/lib/toji/product/event.rb +0 -10
- data/lib/toji/recipe.rb +3 -3
- data/lib/toji/recipe/step.rb +29 -27
- data/lib/toji/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 31d789207932cd0399eaf06699ebd22bac870f4809cd112c53486ca5ca8e3164
|
4
|
+
data.tar.gz: aa1b306d160102b281101ac6651ffe94debe5364b335a1e09987622b025f10f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 31deda45a392f5a565d9074b6bcf35163ed21d9a69614cbff3669ec8dc36affa0587f8ba511695c7d33fad781ea2fcc205066be8c53f056349b40e384de18b92
|
7
|
+
data.tar.gz: daa506c803091bdc3bc6409f502419565308610642bd3c3d565234b624daf0fd13198044658dca7bf462348b5e8c2df3bdf0d9cd228a3a5199ec2f05e76ffc3f
|
data/example/calendar.ipynb
CHANGED
@@ -302,7 +302,7 @@
|
|
302
302
|
" name: \"仕1\",\n",
|
303
303
|
" description: \"姫野国夫による酒母省略仕込\",\n",
|
304
304
|
" recipe: Example::Recipe::TEMPLATES[:simple_sokujo_himeno].scale(600).round(0),\n",
|
305
|
-
"
|
305
|
+
" base_date: Time.mktime(2020, 2, 24)\n",
|
306
306
|
"))\n",
|
307
307
|
".add(Example::Product.create(\n",
|
308
308
|
" name: \"仕2\",\n",
|
@@ -311,7 +311,7 @@
|
|
311
311
|
" r.steps[0].kake_interval_days = 5\n",
|
312
312
|
" r.steps[2].kake_interval_days = 3\n",
|
313
313
|
" },\n",
|
314
|
-
"
|
314
|
+
" base_date: Time.mktime(2020, 2, 27)\n",
|
315
315
|
"))\n",
|
316
316
|
".add(Example::Product.create(\n",
|
317
317
|
" name: \"仕3\",\n",
|
@@ -320,13 +320,13 @@
|
|
320
320
|
" r.steps[1].koji_interval_days = 11\n",
|
321
321
|
" r.steps[1].kake_interval_days = 13\n",
|
322
322
|
" },\n",
|
323
|
-
"
|
323
|
+
" base_date: Time.mktime(2020, 2, 20)\n",
|
324
324
|
"))\n",
|
325
325
|
".add(Example::Product.create(\n",
|
326
326
|
" name: \"仕4\",\n",
|
327
327
|
" description: \"酒造教本による標準型仕込配合\",\n",
|
328
328
|
" recipe: Example::Recipe::TEMPLATES[:sokujo_textbook].scale(900).round(0),\n",
|
329
|
-
"
|
329
|
+
" base_date: Time.mktime(2020, 2, 20)\n",
|
330
330
|
"))\n",
|
331
331
|
".add(Example::Product.create(\n",
|
332
332
|
" name: \"仕5\",\n",
|
@@ -335,13 +335,13 @@
|
|
335
335
|
" r.steps[1].koji_interval_days = 11\n",
|
336
336
|
" r.steps[1].kake_interval_days = 13\n",
|
337
337
|
" },\n",
|
338
|
-
"
|
338
|
+
" base_date: Time.mktime(2020, 2, 27)\n",
|
339
339
|
"))\n",
|
340
340
|
".add(Example::Product.create(\n",
|
341
341
|
" name: \"仕6\",\n",
|
342
342
|
" description: \"酒造教本による標準型仕込配合\",\n",
|
343
343
|
" recipe: Example::Recipe::TEMPLATES[:sokujo_textbook].scale(900).round(0),\n",
|
344
|
-
"
|
344
|
+
" base_date: Time.mktime(2020, 2, 27)\n",
|
345
345
|
"))\n",
|
346
346
|
"\n",
|
347
347
|
"cal.products.each {|product|\n",
|
data/example/calendar.yaml
CHANGED
@@ -4,34 +4,34 @@ products:
|
|
4
4
|
recipe: :simple_sokujo_himeno
|
5
5
|
scale: 600
|
6
6
|
round: 0
|
7
|
-
|
7
|
+
base_date: 2020-2-24
|
8
8
|
- name: 仕2
|
9
9
|
description: 姫野国夫による酒母省略仕込
|
10
10
|
recipe: :simple_sokujo_himeno
|
11
11
|
scale: 550
|
12
12
|
round: 0
|
13
|
-
|
13
|
+
base_date: 2020-2-27
|
14
14
|
- name: 仕3
|
15
15
|
description: 灘における仕込配合
|
16
16
|
recipe: :sokujo_nada
|
17
17
|
scale: 900
|
18
18
|
round: 0
|
19
|
-
|
19
|
+
base_date: 2020-2-20
|
20
20
|
- name: 仕4
|
21
21
|
description: 酒造教本による標準型仕込配合
|
22
22
|
recipe: :sokujo_textbook
|
23
23
|
scale: 900
|
24
24
|
round: 0
|
25
|
-
|
25
|
+
base_date: 2020-2-20
|
26
26
|
- name: 仕5
|
27
27
|
description: 灘における仕込配合
|
28
28
|
recipe: :sokujo_nada
|
29
29
|
scale: 900
|
30
30
|
round: 0
|
31
|
-
|
31
|
+
base_date: 2020-2-27
|
32
32
|
- name: 仕6
|
33
33
|
description: 酒造教本による標準型仕込配合
|
34
34
|
recipe: :sokujo_textbook
|
35
35
|
scale: 900
|
36
36
|
round: 0
|
37
|
-
|
37
|
+
base_date: 2020-2-27
|
data/example/example_core.rb
CHANGED
@@ -69,25 +69,6 @@ module Example
|
|
69
69
|
class Step
|
70
70
|
include Toji::Recipe::Step
|
71
71
|
|
72
|
-
# 総重量
|
73
|
-
def weight_total
|
74
|
-
kake + koji + water + lactic_acid + alcohol + yeast
|
75
|
-
end
|
76
|
-
|
77
|
-
def to_h
|
78
|
-
{
|
79
|
-
name: name,
|
80
|
-
kake: kake,
|
81
|
-
koji: koji,
|
82
|
-
water: water,
|
83
|
-
lactic_acid: lactic_acid,
|
84
|
-
alcohol: alcohol,
|
85
|
-
yeast: yeast,
|
86
|
-
koji_interval_days: koji_interval_days,
|
87
|
-
kake_interval_days: kake_interval_days,
|
88
|
-
}
|
89
|
-
end
|
90
|
-
|
91
72
|
def self.create(name:, kake: 0, koji: 0, water: 0, lactic_acid: 0, alcohol: 0, yeast: 0, koji_interval_days: 0, kake_interval_days: 0)
|
92
73
|
new.tap {|o|
|
93
74
|
o.name = name
|
@@ -111,16 +92,6 @@ module Example
|
|
111
92
|
@steps = []
|
112
93
|
end
|
113
94
|
|
114
|
-
#def to_h
|
115
|
-
# {
|
116
|
-
# steps: steps.map(&:to_h),
|
117
|
-
# cumulative_rice_totals: cumulative_rice_totals,
|
118
|
-
# cumulative_shubo_rates: cumulative_shubo_rates,
|
119
|
-
# shubo_rate: shubo_rate,
|
120
|
-
# rice_rates: rice_rates,
|
121
|
-
# }
|
122
|
-
#end
|
123
|
-
|
124
95
|
def self.create(steps)
|
125
96
|
new.tap {|o|
|
126
97
|
o.steps = steps
|
@@ -278,30 +249,15 @@ module Example
|
|
278
249
|
attr_accessor :description
|
279
250
|
attr_accessor :color
|
280
251
|
|
281
|
-
def initialize(reduce_key, name, description, recipe,
|
252
|
+
def initialize(reduce_key, name, description, recipe, base_date, color=nil)
|
282
253
|
@reduce_key = reduce_key || SecureRandom.uuid
|
283
254
|
@name = name
|
284
255
|
@description = description
|
285
256
|
@recipe = recipe
|
286
|
-
@
|
257
|
+
@base_date = base_date
|
287
258
|
@color = color
|
288
259
|
end
|
289
260
|
|
290
|
-
def to_h
|
291
|
-
{
|
292
|
-
id: id,
|
293
|
-
name: name,
|
294
|
-
description: @description,
|
295
|
-
recipe: @recipe.table_data,
|
296
|
-
start_date: @start_date,
|
297
|
-
koji_dates: koji_dates,
|
298
|
-
kake_dates: kake_dates,
|
299
|
-
events: events.map(&:to_h),
|
300
|
-
events_group: events_group,
|
301
|
-
color: @color,
|
302
|
-
}
|
303
|
-
end
|
304
|
-
|
305
261
|
def self.create(args)
|
306
262
|
if self===args
|
307
263
|
args
|
@@ -322,7 +278,7 @@ module Example
|
|
322
278
|
args[:name],
|
323
279
|
args[:description],
|
324
280
|
recipe,
|
325
|
-
args[:
|
281
|
+
args[:base_date],
|
326
282
|
args[:color]
|
327
283
|
)
|
328
284
|
else
|
data/example/koji_making.rb
CHANGED
@@ -7,7 +7,7 @@ koji = Example::Brew::Koji.load_yaml_file(File.dirname(__FILE__)+"/koji_making.y
|
|
7
7
|
table = Terminal::Table.new do |t|
|
8
8
|
t << ["作業", "日数", "品温(度)", "操作室温", "乾湿差(度)", "経過時間", "日時"]
|
9
9
|
t << :separator
|
10
|
-
koji.each {|s|
|
10
|
+
koji.wrapped_states.each {|s|
|
11
11
|
temp = s.temps.map(&:to_s).join(" / ")
|
12
12
|
t << [s.mark, s.day_label, temp, s.room_temp, s.room_psychrometry, s.elapsed_time, s.display_time]
|
13
13
|
}
|
data/example/moromi.rb
CHANGED
@@ -3,12 +3,12 @@ require_relative 'example_core'
|
|
3
3
|
require 'terminal-table'
|
4
4
|
|
5
5
|
|
6
|
-
moromi =
|
6
|
+
moromi = Example::Brew::Moromi.load_yaml_file(File.dirname(__FILE__)+"/moromi.yaml")
|
7
7
|
|
8
8
|
table = Terminal::Table.new do |t|
|
9
9
|
t << ["作業", "日数", "品温(度)", "操作室温", "ボーメ及び日本酒度", "アルコール度数", "BMD", "アルコール期待値(16.5 +3)", "経過時間", "日時"]
|
10
10
|
t << :separator
|
11
|
-
moromi.each {|s|
|
11
|
+
moromi.wrapped_states.each {|s|
|
12
12
|
temp = s.temps.map(&:to_s).join(" / ")
|
13
13
|
t << [s.mark, s.day_label, temp, s.room_temp, s.display_baume, s.alcohol, s.bmd&.round(2), s.expected_alcohol(16.5, +3, 1.5)&.round(2), s.elapsed_time, s.display_time]
|
14
14
|
}
|
data/example/recipe.rb
CHANGED
@@ -2,30 +2,37 @@ require 'toji'
|
|
2
2
|
require_relative 'example_core'
|
3
3
|
require 'terminal-table'
|
4
4
|
|
5
|
-
recipe = Example::Recipe::TEMPLATES[:sokujo_nada].scale(900)
|
5
|
+
recipe = Example::Recipe::TEMPLATES[:sokujo_nada].scale(900).round(2)
|
6
6
|
step_names = recipe.steps.map(&:name)
|
7
7
|
|
8
8
|
table = Terminal::Table.new do |t|
|
9
9
|
t << [""] + step_names
|
10
10
|
t << :separator
|
11
11
|
t << ["[原料]"]
|
12
|
-
t << ["酵母(g or 本)"] + recipe.steps.map(&:yeast)
|
13
|
-
t << ["乳酸(ml)"] + recipe.steps.map(&:lactic_acid)
|
14
|
-
t << ["掛米(g)"] + recipe.steps.map(&:kake)
|
15
|
-
t << ["麹米(g)"] + recipe.steps.map(&:koji)
|
16
|
-
t << ["汲水(ml)"] + recipe.steps.map(&:water)
|
17
|
-
t << ["醸造アルコール(ml)"] + recipe.steps.map(&:alcohol)
|
12
|
+
t << ["酵母(g or 本)"] + recipe.steps.map(&:yeast)
|
13
|
+
t << ["乳酸(ml)"] + recipe.steps.map(&:lactic_acid)
|
14
|
+
t << ["掛米(g)"] + recipe.steps.map(&:kake)
|
15
|
+
t << ["麹米(g)"] + recipe.steps.map(&:koji)
|
16
|
+
t << ["汲水(ml)"] + recipe.steps.map(&:water)
|
17
|
+
t << ["醸造アルコール(ml)"] + recipe.steps.map(&:alcohol)
|
18
18
|
t << :separator
|
19
19
|
t << ["[合計]"]
|
20
|
-
t << ["総米(g)"] + recipe.steps.map(&:rice_total)
|
20
|
+
t << ["総米(g)"] + recipe.steps.map(&:rice_total)
|
21
21
|
t << ["麹歩合(%)"] + recipe.steps.map{|s| s.koji_rate * 100}.map{|v| v&.round(2)}
|
22
22
|
t << ["汲水歩合(%)"] + recipe.steps.map{|s| s.water_rate * 100}.map{|v| v&.round(2)}
|
23
23
|
t << :separator
|
24
24
|
t << ["[累計]"]
|
25
|
-
t << ["総米(g)"] + recipe.cumulative_rice_totals
|
25
|
+
t << ["総米(g)"] + recipe.cumulative_rice_totals
|
26
26
|
t << ["白米比率"] + recipe.rice_rates.map{|v| v&.round(2)}
|
27
27
|
t << ["酒母歩合(%)"] + recipe.cumulative_shubo_rates.map{|s| s * 100}.map{|v| v&.round(2)}
|
28
|
-
t << ["タンク内容量(ml)"] + recipe.
|
28
|
+
t << ["タンク内容量(ml)"] + recipe.steps.map {|s|
|
29
|
+
kake = Toji::Ingredient::Kake::Expected.create(s.kake)
|
30
|
+
koji = Toji::Ingredient::Koji::Expected.create(s.koji)
|
31
|
+
s.yeast.to_f + s.lactic_acid.to_f + kake.steamed.to_f + koji.dekoji.to_f + s.water.to_f + s.alcohol.to_f
|
32
|
+
}.then {|a|
|
33
|
+
sum = 0.0
|
34
|
+
a.map {|x| sum += x}
|
35
|
+
}.map{|v| v&.round(2)}
|
29
36
|
end
|
30
37
|
puts table
|
31
38
|
puts
|
data/example/shubo.rb
CHANGED
@@ -7,7 +7,7 @@ shubo = Example::Brew::Shubo.load_yaml_file(File.dirname(__FILE__)+"/shubo.yaml"
|
|
7
7
|
table = Terminal::Table.new do |t|
|
8
8
|
t << ["作業", "日数", "品温(度)", "ボーメ", "酸度", "経過時間", "日時"]
|
9
9
|
t << :separator
|
10
|
-
shubo.each {|s|
|
10
|
+
shubo.wrapped_states.each {|s|
|
11
11
|
temp = s.temps.map(&:to_s).join(" / ")
|
12
12
|
t << [s.mark, s.day_label, temp, s.baume, s.acid, s.elapsed_time, s.display_time]
|
13
13
|
}
|
data/lib/toji/brew/base.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
module Toji
|
2
2
|
module Brew
|
3
3
|
module Base
|
4
|
-
include Enumerable
|
5
|
-
|
6
4
|
REQUIRED_KEYS = [
|
7
5
|
:time,
|
8
6
|
:elapsed_time,
|
@@ -45,10 +43,6 @@ module Toji
|
|
45
43
|
nil
|
46
44
|
end
|
47
45
|
|
48
|
-
def each(&block)
|
49
|
-
wrapped_states.each(&block)
|
50
|
-
end
|
51
|
-
|
52
46
|
def has_keys
|
53
47
|
result = REQUIRED_KEYS.dup
|
54
48
|
|
data/lib/toji/brew/graph/ab.rb
CHANGED
@@ -24,7 +24,7 @@ module Toji
|
|
24
24
|
result = []
|
25
25
|
|
26
26
|
@actuals.each {|moromi, name|
|
27
|
-
states = moromi.select{|s| s.alcohol && s.baume}
|
27
|
+
states = moromi.wrapped_states.select{|s| s.alcohol && s.baume}
|
28
28
|
|
29
29
|
xs = states.map(&:alcohol)
|
30
30
|
ys = states.map(&:baume)
|
@@ -47,13 +47,13 @@ module Toji
|
|
47
47
|
|
48
48
|
def min_baume
|
49
49
|
@actuals.map {|moromi, name|
|
50
|
-
moromi.map(&:baume).compact.min
|
50
|
+
moromi.wrapped_states.map(&:baume).compact.min
|
51
51
|
}.compact.min || 0
|
52
52
|
end
|
53
53
|
|
54
54
|
def max_baume
|
55
55
|
@actuals.map {|moromi, name|
|
56
|
-
moromi.map(&:baume).compact.max
|
56
|
+
moromi.wrapped_states.map(&:baume).compact.max
|
57
57
|
}.compact.max || 0
|
58
58
|
end
|
59
59
|
|
@@ -56,13 +56,13 @@ module Toji
|
|
56
56
|
xs = []
|
57
57
|
ys = []
|
58
58
|
text = []
|
59
|
-
@brew.each {|
|
60
|
-
val =
|
59
|
+
@brew.wrapped_states.each {|s|
|
60
|
+
val = s.send(key)
|
61
61
|
if val
|
62
62
|
[val].flatten.each_with_index {|v,i|
|
63
|
-
xs <<
|
63
|
+
xs << s.elapsed_time_with_offset + i
|
64
64
|
ys << v
|
65
|
-
text <<
|
65
|
+
text << s.display_time
|
66
66
|
}
|
67
67
|
end
|
68
68
|
}
|
@@ -102,7 +102,7 @@ module Toji
|
|
102
102
|
def annotations
|
103
103
|
return [] if !@enable_annotations
|
104
104
|
|
105
|
-
@brew.select{|s| s.mark}.map {|s|
|
105
|
+
@brew.wrapped_states.select{|s| s.mark}.map {|s|
|
106
106
|
{
|
107
107
|
x: s.elapsed_time_with_offset,
|
108
108
|
y: s.temps.first || 0,
|
@@ -131,7 +131,7 @@ module Toji
|
|
131
131
|
end
|
132
132
|
|
133
133
|
rows = []
|
134
|
-
@brew.each {|state|
|
134
|
+
@brew.wrapped_states.each {|state|
|
135
135
|
rows << keys.map {|k|
|
136
136
|
v = state&.send(k)
|
137
137
|
if Array===v
|
@@ -104,33 +104,6 @@ module Toji
|
|
104
104
|
target_alc - (_baume - target_nihonshudo * -0.1) * coef
|
105
105
|
end
|
106
106
|
end
|
107
|
-
|
108
|
-
def to_h
|
109
|
-
{
|
110
|
-
elapsed_time: elapsed_time,
|
111
|
-
time: time,
|
112
|
-
mark: mark,
|
113
|
-
temps: temps,
|
114
|
-
preset_temp: preset_temp,
|
115
|
-
room_temp: room_temp,
|
116
|
-
room_psychrometry: room_psychrometry,
|
117
|
-
acid: acid,
|
118
|
-
amino_acid: amino_acid,
|
119
|
-
alcohol: alcohol,
|
120
|
-
warmings: warmings,
|
121
|
-
note: note,
|
122
|
-
|
123
|
-
day: day,
|
124
|
-
day_label: day_label,
|
125
|
-
elapsed_time_with_offset: elapsed_time_with_offset,
|
126
|
-
baume: baume,
|
127
|
-
nihonshudo: nihonshudo,
|
128
|
-
display_baume: display_baume,
|
129
|
-
display_time: display_time,
|
130
|
-
moromi_day: moromi_day,
|
131
|
-
bmd: bmd,
|
132
|
-
}
|
133
|
-
end
|
134
107
|
end
|
135
108
|
end
|
136
109
|
end
|
data/lib/toji/calendar.rb
CHANGED
data/lib/toji/product.rb
CHANGED
@@ -5,17 +5,17 @@ module Toji
|
|
5
5
|
attr_reader :reduce_key
|
6
6
|
attr_accessor :name
|
7
7
|
attr_accessor :recipe
|
8
|
-
attr_accessor :
|
8
|
+
attr_accessor :base_date
|
9
9
|
|
10
10
|
def koji_dates
|
11
|
-
date =
|
11
|
+
date = base_date
|
12
12
|
recipe.steps.map {|step|
|
13
13
|
date = date.next_day(step.koji_interval_days)
|
14
14
|
}
|
15
15
|
end
|
16
16
|
|
17
17
|
def kake_dates
|
18
|
-
date =
|
18
|
+
date = base_date
|
19
19
|
recipe.steps.map {|step|
|
20
20
|
date = date.next_day(step.kake_interval_days)
|
21
21
|
}
|
data/lib/toji/product/event.rb
CHANGED
data/lib/toji/recipe.rb
CHANGED
@@ -69,15 +69,15 @@ module Toji
|
|
69
69
|
end
|
70
70
|
|
71
71
|
def table_data
|
72
|
-
headers = [""] +
|
72
|
+
headers = [""] + steps.map(&:name) + [:total]
|
73
73
|
keys = [:rice_total, :kake, :koji, :alcohol, :water, :lactic_acid]
|
74
74
|
|
75
75
|
cells = [keys]
|
76
|
-
cells +=
|
76
|
+
cells += steps.map {|step|
|
77
77
|
[step.rice_total, step.kake, step.koji, step.alcohol, step.water, step.lactic_acid]
|
78
78
|
}
|
79
79
|
cells << keys.map {|key|
|
80
|
-
|
80
|
+
steps.map(&key).compact.sum
|
81
81
|
}
|
82
82
|
|
83
83
|
cells = cells.map {|cell|
|
data/lib/toji/recipe/step.rb
CHANGED
@@ -13,7 +13,7 @@ module Toji
|
|
13
13
|
|
14
14
|
# 総米
|
15
15
|
def rice_total
|
16
|
-
|
16
|
+
kake.to_f + koji.to_f
|
17
17
|
end
|
18
18
|
|
19
19
|
# 麹歩合
|
@@ -22,7 +22,8 @@ module Toji
|
|
22
22
|
# なお、留め仕込みまでの麹歩合が20%を下回ると蒸米の溶解糖化に影響が出るので注意がいる
|
23
23
|
# 出典: 酒造教本 P95
|
24
24
|
def koji_rate
|
25
|
-
|
25
|
+
val = koji.to_f / rice_total
|
26
|
+
val.nan? ? 0.0 : val
|
26
27
|
end
|
27
28
|
|
28
29
|
# 汲水歩合
|
@@ -35,7 +36,8 @@ module Toji
|
|
35
36
|
#
|
36
37
|
# 出典: 酒造教本 P96
|
37
38
|
def water_rate
|
38
|
-
|
39
|
+
val = water.to_f / rice_total
|
40
|
+
val.nan? ? 0.0 : val
|
39
41
|
end
|
40
42
|
|
41
43
|
def round(ndigit=0, mini_ndigit=nil, half: :up)
|
@@ -45,14 +47,14 @@ module Toji
|
|
45
47
|
|
46
48
|
self.class.new.tap {|o|
|
47
49
|
o.name = name
|
48
|
-
o.kake = kake.round(ndigit, half: half)
|
49
|
-
o.koji = koji.round(ndigit, half: half)
|
50
|
-
o.water = water.round(ndigit, half: half)
|
51
|
-
o.lactic_acid = lactic_acid.round(mini_ndigit, half: half)
|
52
|
-
o.alcohol = alcohol.round(ndigit, half: half)
|
53
|
-
o.yeast = yeast.round(mini_ndigit, half: half)
|
54
|
-
o.koji_interval_days = koji_interval_days
|
55
|
-
o.kake_interval_days = kake_interval_days
|
50
|
+
o.kake = kake.to_f.round(ndigit, half: half)
|
51
|
+
o.koji = koji.to_f.round(ndigit, half: half)
|
52
|
+
o.water = water.to_f.round(ndigit, half: half)
|
53
|
+
o.lactic_acid = lactic_acid.to_f.round(mini_ndigit, half: half)
|
54
|
+
o.alcohol = alcohol.to_f.round(ndigit, half: half)
|
55
|
+
o.yeast = yeast.to_f.round(mini_ndigit, half: half)
|
56
|
+
o.koji_interval_days = koji_interval_days.to_i
|
57
|
+
o.kake_interval_days = kake_interval_days.to_i
|
56
58
|
}
|
57
59
|
end
|
58
60
|
|
@@ -60,14 +62,14 @@ module Toji
|
|
60
62
|
if Step===other
|
61
63
|
self.class.new.tap {|o|
|
62
64
|
o.name = name
|
63
|
-
o.kake = kake + other.kake
|
64
|
-
o.koji = koji + other.koji
|
65
|
-
o.water = water + other.water
|
66
|
-
o.lactic_acid = lactic_acid + other.lactic_acid
|
67
|
-
o.alcohol = alcohol + other.alcohol
|
68
|
-
o.yeast = yeast + other.yeast
|
69
|
-
o.koji_interval_days = koji_interval_days
|
70
|
-
o.kake_interval_days = kake_interval_days
|
65
|
+
o.kake = kake.to_f + other.kake.to_f
|
66
|
+
o.koji = koji.to_f + other.koji.to_f
|
67
|
+
o.water = water.to_f + other.water.to_f
|
68
|
+
o.lactic_acid = lactic_acid.to_f + other.lactic_acid.to_f
|
69
|
+
o.alcohol = alcohol.to_f + other.alcohol.to_f
|
70
|
+
o.yeast = yeast.to_f + other.yeast.to_f
|
71
|
+
o.koji_interval_days = koji_interval_days.to_i
|
72
|
+
o.kake_interval_days = kake_interval_days.to_i
|
71
73
|
}
|
72
74
|
else
|
73
75
|
x, y = other.coerce(self)
|
@@ -79,14 +81,14 @@ module Toji
|
|
79
81
|
if Integer===other || Float===other
|
80
82
|
self.class.new.tap {|o|
|
81
83
|
o.name = name
|
82
|
-
o.kake = kake * other
|
83
|
-
o.koji = koji * other
|
84
|
-
o.water = water * other
|
85
|
-
o.lactic_acid = lactic_acid * other
|
86
|
-
o.alcohol = alcohol * other
|
87
|
-
o.yeast = yeast * other
|
88
|
-
o.koji_interval_days = koji_interval_days
|
89
|
-
o.kake_interval_days = kake_interval_days
|
84
|
+
o.kake = kake.to_f * other
|
85
|
+
o.koji = koji.to_f * other
|
86
|
+
o.water = water.to_f * other
|
87
|
+
o.lactic_acid = lactic_acid.to_f * other
|
88
|
+
o.alcohol = alcohol.to_f * other
|
89
|
+
o.yeast = yeast.to_f * other
|
90
|
+
o.koji_interval_days = koji_interval_days.to_i
|
91
|
+
o.kake_interval_days = kake_interval_days.to_i
|
90
92
|
}
|
91
93
|
else
|
92
94
|
x, y = other.coerce(self)
|
data/lib/toji/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: toji
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yoshida Tetsuya
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-07-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|