toji 2.2.0 → 2.3.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/example/calendar.ipynb +281 -21
- data/example/calendar_file.ipynb +37 -37
- data/example/example_core.rb +27 -9
- data/example/{kake_recipe.rb → kake_ingredient.rb} +0 -1
- data/example/{koji_recipe.rb → koji_ingredient.rb} +1 -2
- data/example/koji_making.ipynb +9 -9
- data/example/koji_making.yaml +1 -0
- data/example/koji_making_multi.ipynb +22 -57
- data/example/moromi.ipynb +17 -17
- data/example/shubo.ipynb +12 -12
- data/example/shubo.yaml +2 -1
- data/lib/toji/brew.rb +4 -2
- data/lib/toji/brew/base.rb +6 -26
- data/lib/toji/brew/builder.rb +49 -21
- data/lib/toji/brew/graph/bmd.rb +1 -1
- data/lib/toji/brew/graph/multi_progress.rb +0 -121
- data/lib/toji/brew/graph/progress.rb +16 -51
- data/lib/toji/brew/koji.rb +2 -1
- data/lib/toji/brew/moromi.rb +2 -1
- data/lib/toji/brew/shubo.rb +2 -1
- data/lib/toji/brew/state.rb +1 -1
- data/lib/toji/brew/{state_wrapper.rb → wrapped_state.rb} +6 -5
- data/lib/toji/ingredient/kake.rb +2 -2
- data/lib/toji/ingredient/kake/actual.rb +6 -7
- data/lib/toji/ingredient/kake/base.rb +1 -1
- data/lib/toji/ingredient/kake/expected.rb +0 -1
- data/lib/toji/ingredient/koji.rb +2 -2
- data/lib/toji/ingredient/koji/actual.rb +8 -9
- data/lib/toji/ingredient/koji/base.rb +1 -1
- data/lib/toji/ingredient/koji/expected.rb +0 -1
- data/lib/toji/ingredient/rice/actual_steamable.rb +4 -4
- data/lib/toji/ingredient/rice/base.rb +0 -1
- data/lib/toji/ingredient/rice/expected_steamable.rb +1 -3
- data/lib/toji/ingredient/rice_rate.rb +2 -14
- data/lib/toji/recipe.rb +2 -11
- data/lib/toji/recipe/step.rb +9 -11
- data/lib/toji/version.rb +1 -1
- metadata +5 -5
data/lib/toji/brew/state.rb
CHANGED
@@ -2,7 +2,7 @@ require 'forwardable'
|
|
2
2
|
|
3
3
|
module Toji
|
4
4
|
module Brew
|
5
|
-
class
|
5
|
+
class WrappedState
|
6
6
|
extend Forwardable
|
7
7
|
|
8
8
|
attr_accessor :elapsed_time
|
@@ -21,8 +21,9 @@ module Toji
|
|
21
21
|
def_delegators :@state, :warmings
|
22
22
|
def_delegators :@state, :note
|
23
23
|
|
24
|
-
def initialize(
|
25
|
-
@elapsed_time = elapsed_time
|
24
|
+
def initialize(state, brew)
|
25
|
+
@elapsed_time = state.elapsed_time
|
26
|
+
@time = state.time
|
26
27
|
@state = state
|
27
28
|
@brew = brew
|
28
29
|
end
|
@@ -69,8 +70,8 @@ module Toji
|
|
69
70
|
def display_time(format="%m/%d %H:%M")
|
70
71
|
if @time
|
71
72
|
@time.strftime(format)
|
72
|
-
elsif @brew.
|
73
|
-
time = @brew.
|
73
|
+
elsif @brew.base_time
|
74
|
+
time = @brew.base_time + @elapsed_time
|
74
75
|
time.strftime(format)
|
75
76
|
else
|
76
77
|
utc_offset = Time.at(0).utc_offset
|
data/lib/toji/ingredient/kake.rb
CHANGED
@@ -9,8 +9,8 @@ module Toji
|
|
9
9
|
Expected.new(raw, rice_rate: rice_rate)
|
10
10
|
end
|
11
11
|
|
12
|
-
def self.actual(raw, soaked,
|
13
|
-
Actual.new(raw, soaked,
|
12
|
+
def self.actual(raw, soaked, steamed, cooled)
|
13
|
+
Actual.new(raw, soaked, steamed, cooled)
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|
@@ -5,17 +5,16 @@ module Toji
|
|
5
5
|
include Base
|
6
6
|
include Rice::ActualSteamable
|
7
7
|
|
8
|
-
def initialize(raw, soaked,
|
9
|
-
@raw = raw
|
10
|
-
@soaked = soaked
|
11
|
-
@
|
12
|
-
@
|
13
|
-
@cooled = cooled
|
8
|
+
def initialize(raw, soaked, steamed, cooled)
|
9
|
+
@raw = raw.to_f
|
10
|
+
@soaked = soaked.to_f
|
11
|
+
@steamed = steamed.to_f
|
12
|
+
@cooled = cooled.to_f
|
14
13
|
end
|
15
14
|
|
16
15
|
def *(other)
|
17
16
|
if Integer===other || Float===other
|
18
|
-
Actual.new(raw * other, soaked * other,
|
17
|
+
Actual.new(raw * other, soaked * other, steamed * other, cooled * other)
|
19
18
|
else
|
20
19
|
x, y = other.coerce(self)
|
21
20
|
x * y
|
@@ -6,7 +6,7 @@ module Toji
|
|
6
6
|
|
7
7
|
def +(other)
|
8
8
|
if Base===other
|
9
|
-
Actual.new(raw + other.raw, soaked + other.soaked,
|
9
|
+
Actual.new(raw + other.raw, soaked + other.soaked, steamed + other.steamed, cooled + other.cooled)
|
10
10
|
else
|
11
11
|
x, y = other.coerce(self)
|
12
12
|
x + y
|
data/lib/toji/ingredient/koji.rb
CHANGED
@@ -11,8 +11,8 @@ module Toji
|
|
11
11
|
Expected.new(raw, rice_rate: rice_rate, koji_rate: koji_rate)
|
12
12
|
end
|
13
13
|
|
14
|
-
def self.actual(raw, soaked,
|
15
|
-
Actual.new(raw, soaked,
|
14
|
+
def self.actual(raw, soaked, steamed, cooled, tanekoji, dekoji)
|
15
|
+
Actual.new(raw, soaked, steamed, cooled, tanekoji, dekoji)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -6,19 +6,18 @@ module Toji
|
|
6
6
|
include Rice::ActualSteamable
|
7
7
|
include ActualFermentable
|
8
8
|
|
9
|
-
def initialize(raw, soaked,
|
10
|
-
@raw = raw
|
11
|
-
@soaked = soaked
|
12
|
-
@
|
13
|
-
@
|
14
|
-
@
|
15
|
-
@
|
16
|
-
@dekoji = dekoji
|
9
|
+
def initialize(raw, soaked, steamed, cooled, tanekoji, dekoji)
|
10
|
+
@raw = raw.to_f
|
11
|
+
@soaked = soaked.to_f
|
12
|
+
@steamed = steamed.to_f
|
13
|
+
@cooled = cooled.to_f
|
14
|
+
@tanekoji = tanekoji.to_f
|
15
|
+
@dekoji = dekoji.to_f
|
17
16
|
end
|
18
17
|
|
19
18
|
def *(other)
|
20
19
|
if Integer===other || Float===other
|
21
|
-
Actual.new(raw * other, soaked * other,
|
20
|
+
Actual.new(raw * other, soaked * other, steamed * other, cooled * other, tanekoji * other, dekoji * other)
|
22
21
|
else
|
23
22
|
x, y = other.coerce(self)
|
24
23
|
x * y
|
@@ -23,7 +23,7 @@ module Toji
|
|
23
23
|
|
24
24
|
def +(other)
|
25
25
|
if Base===other
|
26
|
-
Actual.new(raw + other.raw, soaked + other.soaked,
|
26
|
+
Actual.new(raw + other.raw, soaked + other.soaked, steamed + other.steamed, cooled + other.cooled, tanekoji + other.tanekoji, dekoji + other.dekoji)
|
27
27
|
else
|
28
28
|
x, y = other.coerce(self)
|
29
29
|
x + y
|
@@ -10,14 +10,14 @@ module Toji
|
|
10
10
|
soaked - raw
|
11
11
|
end
|
12
12
|
|
13
|
-
def before_steaming_rate
|
14
|
-
# TODO
|
15
|
-
end
|
16
|
-
|
17
13
|
def steamed_rate
|
18
14
|
(steamed - raw) / raw
|
19
15
|
end
|
20
16
|
|
17
|
+
def steaming_water
|
18
|
+
steamed - raw
|
19
|
+
end
|
20
|
+
|
21
21
|
def cooled_rate
|
22
22
|
(cooled - raw) / raw
|
23
23
|
end
|
@@ -4,32 +4,20 @@ module Toji
|
|
4
4
|
# 浸漬米吸水率
|
5
5
|
attr_reader :soaked_rate
|
6
6
|
|
7
|
-
# 蒸し前浸漬米吸水率
|
8
|
-
# 炊飯の場合は水を追加
|
9
|
-
# 蒸しの場合は一晩経って蒸発した分を削減
|
10
|
-
attr_reader :before_steaming_rate
|
11
|
-
|
12
7
|
# 蒸米吸水率
|
13
8
|
attr_reader :steamed_rate
|
14
9
|
|
15
10
|
# 放冷後蒸米吸水率
|
16
11
|
attr_reader :cooled_rate
|
17
12
|
|
18
|
-
def initialize(soaked_rate,
|
13
|
+
def initialize(soaked_rate, steamed_rate, cooled_rate)
|
19
14
|
@soaked_rate = soaked_rate
|
20
|
-
@before_steaming_rate = before_steaming_rate
|
21
15
|
@steamed_rate = steamed_rate
|
22
16
|
@cooled_rate = cooled_rate
|
23
17
|
end
|
24
18
|
|
25
|
-
def before_steaming_rate
|
26
|
-
@before_steaming_rate || begin
|
27
|
-
@soaked_rate - 0.04
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
19
|
|
32
|
-
DEFAULT = new(0.33,
|
20
|
+
DEFAULT = new(0.33, 0.41, 0.33)
|
33
21
|
end
|
34
22
|
end
|
35
23
|
end
|
data/lib/toji/recipe.rb
CHANGED
@@ -15,9 +15,9 @@ module Toji
|
|
15
15
|
}
|
16
16
|
end
|
17
17
|
|
18
|
-
def round(ndigit=0, half: :up)
|
18
|
+
def round(ndigit=0, mini_ndigit=nil, half: :up)
|
19
19
|
new_steps = steps.map {|step|
|
20
|
-
step.round(ndigit, half: half)
|
20
|
+
step.round(ndigit, mini_ndigit, half: half)
|
21
21
|
}
|
22
22
|
|
23
23
|
self.class.new.tap {|o|
|
@@ -25,15 +25,6 @@ module Toji
|
|
25
25
|
}
|
26
26
|
end
|
27
27
|
|
28
|
-
# 内容量の累計
|
29
|
-
def cumulative_weight_totals
|
30
|
-
weight_total = steps.map(&:weight_total)
|
31
|
-
|
32
|
-
weight_total.map.with_index {|x,i|
|
33
|
-
weight_total[0..i].inject(:+)
|
34
|
-
}
|
35
|
-
end
|
36
|
-
|
37
28
|
# 総米の累計
|
38
29
|
def cumulative_rice_totals
|
39
30
|
rice_total = steps.map(&:rice_total)
|
data/lib/toji/recipe/step.rb
CHANGED
@@ -13,7 +13,7 @@ module Toji
|
|
13
13
|
|
14
14
|
# 総米
|
15
15
|
def rice_total
|
16
|
-
kake
|
16
|
+
[kake, koji].compact.map(&:to_f).sum
|
17
17
|
end
|
18
18
|
|
19
19
|
# 麹歩合
|
@@ -22,8 +22,7 @@ module Toji
|
|
22
22
|
# なお、留め仕込みまでの麹歩合が20%を下回ると蒸米の溶解糖化に影響が出るので注意がいる
|
23
23
|
# 出典: 酒造教本 P95
|
24
24
|
def koji_rate
|
25
|
-
|
26
|
-
ret.nan? ? 0.0 : ret
|
25
|
+
(koji || 0.0) / rice_total
|
27
26
|
end
|
28
27
|
|
29
28
|
# 汲水歩合
|
@@ -36,13 +35,12 @@ module Toji
|
|
36
35
|
#
|
37
36
|
# 出典: 酒造教本 P96
|
38
37
|
def water_rate
|
39
|
-
|
40
|
-
ret.nan? ? 0.0 : ret
|
38
|
+
(water || 0.0) / rice_total
|
41
39
|
end
|
42
40
|
|
43
|
-
def round(ndigit=0,
|
44
|
-
if !
|
45
|
-
|
41
|
+
def round(ndigit=0, mini_ndigit=nil, half: :up)
|
42
|
+
if !mini_ndigit
|
43
|
+
mini_ndigit = ndigit + 3
|
46
44
|
end
|
47
45
|
|
48
46
|
self.class.new.tap {|o|
|
@@ -50,9 +48,9 @@ module Toji
|
|
50
48
|
o.kake = kake.round(ndigit, half: half)
|
51
49
|
o.koji = koji.round(ndigit, half: half)
|
52
50
|
o.water = water.round(ndigit, half: half)
|
53
|
-
o.lactic_acid = lactic_acid.round(
|
51
|
+
o.lactic_acid = lactic_acid.round(mini_ndigit, half: half)
|
54
52
|
o.alcohol = alcohol.round(ndigit, half: half)
|
55
|
-
o.yeast = yeast.round(
|
53
|
+
o.yeast = yeast.round(mini_ndigit, half: half)
|
56
54
|
o.koji_interval_days = koji_interval_days
|
57
55
|
o.kake_interval_days = kake_interval_days
|
58
56
|
}
|
@@ -61,7 +59,7 @@ module Toji
|
|
61
59
|
def +(other)
|
62
60
|
if Step===other
|
63
61
|
self.class.new.tap {|o|
|
64
|
-
o.name =
|
62
|
+
o.name = name
|
65
63
|
o.kake = kake + other.kake
|
66
64
|
o.koji = koji + other.koji
|
67
65
|
o.water = water + other.water
|
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.3.0
|
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-06-
|
11
|
+
date: 2020-06-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -113,12 +113,12 @@ files:
|
|
113
113
|
- example/calendar.yaml
|
114
114
|
- example/calendar_file.ipynb
|
115
115
|
- example/example_core.rb
|
116
|
-
- example/
|
116
|
+
- example/kake_ingredient.rb
|
117
|
+
- example/koji_ingredient.rb
|
117
118
|
- example/koji_making.ipynb
|
118
119
|
- example/koji_making.rb
|
119
120
|
- example/koji_making.yaml
|
120
121
|
- example/koji_making_multi.ipynb
|
121
|
-
- example/koji_recipe.rb
|
122
122
|
- example/moromi.ipynb
|
123
123
|
- example/moromi.rb
|
124
124
|
- example/moromi.yaml
|
@@ -139,7 +139,7 @@ files:
|
|
139
139
|
- lib/toji/brew/moromi.rb
|
140
140
|
- lib/toji/brew/shubo.rb
|
141
141
|
- lib/toji/brew/state.rb
|
142
|
-
- lib/toji/brew/
|
142
|
+
- lib/toji/brew/wrapped_state.rb
|
143
143
|
- lib/toji/calendar.rb
|
144
144
|
- lib/toji/calendar/date_column.rb
|
145
145
|
- lib/toji/calendar/date_row.rb
|