toji 2.8.0 → 2.13.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 +42 -51
- data/example/calendar.yaml +6 -6
- data/example/calendar_file.ipynb +36 -36
- data/example/example_core.rb +877 -205
- data/example/kake_ingredient.rb +21 -15
- data/example/koji_ingredient.rb +31 -21
- data/example/{koji_making.ipynb → koji_progress.ipynb} +14 -14
- data/example/{koji_making.rb → koji_progress.rb} +3 -2
- data/example/{koji_making.yaml → koji_progress.yaml} +8 -9
- data/example/{koji_making_multi.ipynb → koji_progress_multi.ipynb} +21 -22
- data/example/{moromi.ipynb → moromi_progress.ipynb} +22 -22
- data/example/{moromi.rb → moromi_progress.rb} +3 -2
- data/example/{moromi.yaml → moromi_progress.yaml} +0 -0
- data/example/moto_progress.ipynb +121 -0
- data/example/{moto.rb → moto_progress.rb} +3 -2
- data/example/{moto.yaml → moto_progress.yaml} +14 -15
- data/example/recipe.rb +44 -32
- data/lib/toji.rb +4 -1
- data/lib/toji/calendar.rb +18 -18
- data/lib/toji/calendar/date_column.rb +7 -22
- data/lib/toji/calendar/date_row.rb +6 -6
- data/lib/toji/ingredient.rb +6 -2
- data/lib/toji/ingredient/alcohol.rb +14 -0
- data/lib/toji/ingredient/base.rb +11 -0
- data/lib/toji/ingredient/kake.rb +3 -9
- data/lib/toji/ingredient/koji.rb +19 -10
- data/lib/toji/ingredient/lactic_acid.rb +14 -0
- data/lib/toji/ingredient/rice.rb +50 -4
- data/lib/toji/ingredient/tanekoji.rb +29 -0
- data/lib/toji/ingredient/water.rb +18 -0
- data/lib/toji/ingredient/yeast.rb +20 -0
- data/lib/toji/processing.rb +18 -0
- data/lib/toji/processing/base.rb +7 -0
- data/lib/toji/processing/cooled_rice.rb +22 -0
- data/lib/toji/processing/cooled_rice_element.rb +8 -0
- data/lib/toji/processing/dekoji.rb +22 -0
- data/lib/toji/processing/dekoji_element.rb +8 -0
- data/lib/toji/processing/kake_processing.rb +7 -0
- data/lib/toji/processing/koji_processing.rb +10 -0
- data/lib/toji/processing/rice_processing.rb +19 -0
- data/lib/toji/processing/soaked_rice.rb +49 -0
- data/lib/toji/processing/soaked_rice_element.rb +18 -0
- data/lib/toji/processing/steamed_rice.rb +22 -0
- data/lib/toji/processing/steamed_rice_element.rb +8 -0
- data/lib/toji/product.rb +11 -83
- data/lib/toji/product/schedule_factory.rb +74 -0
- data/lib/toji/progress.rb +23 -0
- data/lib/toji/progress/base_progress.rb +37 -0
- data/lib/toji/progress/base_state.rb +39 -0
- data/lib/toji/progress/builder.rb +53 -0
- data/lib/toji/progress/graph.rb +11 -0
- data/lib/toji/{brew → progress}/graph/ab.rb +4 -4
- data/lib/toji/{brew → progress}/graph/bmd.rb +2 -2
- data/lib/toji/{brew/graph/multi_progress.rb → progress/graph/multi_progress_note.rb} +11 -11
- data/lib/toji/{brew/graph/progress.rb → progress/graph/progress_note.rb} +20 -18
- data/lib/toji/progress/koji_progress.rb +15 -0
- data/lib/toji/progress/koji_state.rb +23 -0
- data/lib/toji/{brew/moromi.rb → progress/moromi_progress.rb} +9 -5
- data/lib/toji/progress/moromi_state.rb +77 -0
- data/lib/toji/progress/moto_progress.rb +15 -0
- data/lib/toji/progress/moto_state.rb +31 -0
- data/lib/toji/progress/progress.rb +15 -0
- data/lib/toji/progress/state.rb +9 -0
- data/lib/toji/progress/state/baume_to_nihonshudo.rb +21 -0
- data/lib/toji/progress/state/nihonshudo_to_baume.rb +21 -0
- data/lib/toji/recipe.rb +54 -39
- data/lib/toji/recipe/ab_expect.rb +2 -2
- data/lib/toji/recipe/action.rb +8 -0
- data/lib/toji/recipe/step.rb +97 -71
- data/lib/toji/schedule.rb +5 -0
- data/lib/toji/schedule/action_schedule.rb +9 -0
- data/lib/toji/schedule/base.rb +9 -0
- data/lib/toji/schedule/kake_schedule.rb +11 -0
- data/lib/toji/schedule/koji_schedule.rb +11 -0
- data/lib/toji/schedule/rice_schedule.rb +16 -0
- data/lib/toji/utils.rb +43 -0
- data/lib/toji/version.rb +1 -1
- metadata +59 -40
- data/lib/toji/brew.rb +0 -18
- data/lib/toji/brew/base.rb +0 -55
- data/lib/toji/brew/builder.rb +0 -98
- data/lib/toji/brew/graph.rb +0 -11
- data/lib/toji/brew/koji.rb +0 -11
- data/lib/toji/brew/moto.rb +0 -11
- data/lib/toji/brew/state.rb +0 -122
- data/lib/toji/brew/wrapped_state.rb +0 -109
- data/lib/toji/ingredient/kake/actual.rb +0 -26
- data/lib/toji/ingredient/kake/base.rb +0 -18
- data/lib/toji/ingredient/kake/expected.rb +0 -40
- data/lib/toji/ingredient/koji/actual.rb +0 -29
- data/lib/toji/ingredient/koji/actual_fermentable.rb +0 -15
- data/lib/toji/ingredient/koji/base.rb +0 -35
- data/lib/toji/ingredient/koji/expected.rb +0 -45
- data/lib/toji/ingredient/koji/expected_fermentable.rb +0 -15
- data/lib/toji/ingredient/koji_rate.rb +0 -16
- data/lib/toji/ingredient/rice/actual_steamable.rb +0 -27
- data/lib/toji/ingredient/rice/base.rb +0 -40
- data/lib/toji/ingredient/rice/expected_steamable.rb +0 -27
- data/lib/toji/ingredient/rice_rate.rb +0 -23
- data/lib/toji/product/event.rb +0 -13
- data/lib/toji/product/rice_event.rb +0 -28
- data/lib/toji/product/rice_event_group.rb +0 -19
@@ -1,39 +1,24 @@
|
|
1
1
|
module Toji
|
2
2
|
class Calendar
|
3
3
|
class DateColumn
|
4
|
-
attr_reader :
|
4
|
+
attr_reader :rice_schedules
|
5
5
|
|
6
6
|
def initialize
|
7
|
-
@
|
7
|
+
@rice_schedules = []
|
8
8
|
end
|
9
9
|
|
10
|
-
def <<(
|
11
|
-
@
|
10
|
+
def <<(schedule)
|
11
|
+
@rice_schedules << schedule
|
12
12
|
end
|
13
13
|
alias_method :add, :<<
|
14
14
|
|
15
|
-
def event_groups
|
16
|
-
@rice_events.group_by {|e|
|
17
|
-
e.group_key
|
18
|
-
}.values
|
19
|
-
end
|
20
|
-
|
21
15
|
def text
|
22
|
-
|
23
|
-
name =
|
24
|
-
weight = "%.17g" %
|
16
|
+
@rice_schedules.map {|schedule|
|
17
|
+
name = schedule.product.name
|
18
|
+
weight = "%.17g" % schedule.expect.weight
|
25
19
|
"#{name}: #{weight}"
|
26
20
|
}.join("<br>")
|
27
21
|
end
|
28
|
-
|
29
|
-
def column_events
|
30
|
-
event_groups.map {|es|
|
31
|
-
{
|
32
|
-
product: es.first.product,
|
33
|
-
weight: es.map(&:weight).sum,
|
34
|
-
}
|
35
|
-
}
|
36
|
-
end
|
37
22
|
end
|
38
23
|
end
|
39
24
|
end
|
@@ -11,16 +11,16 @@ module Toji
|
|
11
11
|
@kakes = []
|
12
12
|
end
|
13
13
|
|
14
|
-
def <<(
|
15
|
-
case
|
14
|
+
def <<(schedule)
|
15
|
+
case schedule.rice_type
|
16
16
|
when :koji
|
17
|
-
index =
|
17
|
+
index = schedule.step_indexes.first
|
18
18
|
@kojis[index] ||= DateColumn.new
|
19
|
-
@kojis[index] <<
|
19
|
+
@kojis[index] << schedule
|
20
20
|
when :kake
|
21
|
-
index =
|
21
|
+
index = schedule.step_indexes.first
|
22
22
|
@kakes[index] ||= DateColumn.new
|
23
|
-
@kakes[index] <<
|
23
|
+
@kakes[index] << schedule
|
24
24
|
end
|
25
25
|
end
|
26
26
|
alias_method :add, :<<
|
data/lib/toji/ingredient.rb
CHANGED
@@ -1,8 +1,12 @@
|
|
1
|
+
require 'toji/ingredient/base'
|
1
2
|
require 'toji/ingredient/rice'
|
2
3
|
require 'toji/ingredient/kake'
|
3
4
|
require 'toji/ingredient/koji'
|
4
|
-
require 'toji/ingredient/
|
5
|
-
require 'toji/ingredient/
|
5
|
+
require 'toji/ingredient/tanekoji'
|
6
|
+
require 'toji/ingredient/water'
|
7
|
+
require 'toji/ingredient/lactic_acid'
|
8
|
+
require 'toji/ingredient/alcohol'
|
9
|
+
require 'toji/ingredient/yeast'
|
6
10
|
|
7
11
|
module Toji
|
8
12
|
module Ingredient
|
data/lib/toji/ingredient/kake.rb
CHANGED
@@ -1,16 +1,10 @@
|
|
1
|
-
require 'toji/ingredient/kake/base'
|
2
|
-
require 'toji/ingredient/kake/expected'
|
3
|
-
require 'toji/ingredient/kake/actual'
|
4
|
-
|
5
1
|
module Toji
|
6
2
|
module Ingredient
|
7
3
|
module Kake
|
8
|
-
|
9
|
-
Expected.new(raw, rice_rate: rice_rate)
|
10
|
-
end
|
4
|
+
include Rice
|
11
5
|
|
12
|
-
def
|
13
|
-
|
6
|
+
def group_key
|
7
|
+
[brand, polishing_ratio, made_in, year, soaking_ratio, steaming_ratio, cooling_ratio].join(":")
|
14
8
|
end
|
15
9
|
end
|
16
10
|
end
|
data/lib/toji/ingredient/koji.rb
CHANGED
@@ -1,18 +1,27 @@
|
|
1
|
-
require 'toji/ingredient/koji/base'
|
2
|
-
require 'toji/ingredient/koji/expected_fermentable'
|
3
|
-
require 'toji/ingredient/koji/expected'
|
4
|
-
require 'toji/ingredient/koji/actual_fermentable'
|
5
|
-
require 'toji/ingredient/koji/actual'
|
6
|
-
|
7
1
|
module Toji
|
8
2
|
module Ingredient
|
9
3
|
module Koji
|
10
|
-
|
11
|
-
|
4
|
+
include Rice
|
5
|
+
|
6
|
+
# 種麹 (has_many: Toji::Ingredient::Tanekoji)
|
7
|
+
attr_reader :tanekojis
|
8
|
+
|
9
|
+
# 出麹歩合
|
10
|
+
#
|
11
|
+
# 出麹歩合17〜19%のものが麹菌の繁殖のほどよい麹である
|
12
|
+
#
|
13
|
+
# 出典: 酒造教本 P67
|
14
|
+
attr_reader :dekoji_ratio
|
15
|
+
|
16
|
+
def dekoji
|
17
|
+
weight + weight * dekoji_ratio
|
12
18
|
end
|
13
19
|
|
14
|
-
|
15
|
-
|
20
|
+
# Scheduleへのグループ識別子
|
21
|
+
def group_key
|
22
|
+
keys1 = [brand, polishing_ratio, made_in, year, soaking_ratio, steaming_ratio, cooling_ratio, dekoji_ratio]
|
23
|
+
keys2 = tanekojis&.map(&:group_key)&.sort || []
|
24
|
+
(keys1 + keys2).join(":")
|
16
25
|
end
|
17
26
|
end
|
18
27
|
end
|
data/lib/toji/ingredient/rice.rb
CHANGED
@@ -1,10 +1,56 @@
|
|
1
|
-
require 'toji/ingredient/rice/base'
|
2
|
-
require 'toji/ingredient/rice/expected_steamable'
|
3
|
-
require 'toji/ingredient/rice/actual_steamable'
|
4
|
-
|
5
1
|
module Toji
|
6
2
|
module Ingredient
|
7
3
|
module Rice
|
4
|
+
include Base
|
5
|
+
|
6
|
+
# 白米
|
7
|
+
attr_accessor :weight
|
8
|
+
|
9
|
+
# 品種、精米歩合、産地、年度
|
10
|
+
attr_reader :brand
|
11
|
+
attr_reader :polishing_ratio
|
12
|
+
attr_reader :made_in
|
13
|
+
attr_reader :year
|
14
|
+
|
15
|
+
# 浸漬米吸水率
|
16
|
+
#
|
17
|
+
# 標準的な白米吸水率は掛米で30〜35%、麹米で33%前後で許容範囲はかなり狭い
|
18
|
+
#
|
19
|
+
# 出典: 酒造教本 P38
|
20
|
+
attr_reader :soaking_ratio
|
21
|
+
|
22
|
+
def soaked
|
23
|
+
weight + weight * soaking_ratio
|
24
|
+
end
|
25
|
+
|
26
|
+
# 蒸米吸水率
|
27
|
+
#
|
28
|
+
# 蒸しにより通常甑置き前の浸漬白米の重量よりさらに12〜13%吸水する
|
29
|
+
# 蒸しにより吸水の増加が13%を超える場合は、蒸米の表面が柔らかくべとつく蒸米になりやすい
|
30
|
+
# 蒸米吸水率は麹米及び酒母米で41〜43%、掛米は39〜40%で、吟醸造りの場合は数%低い
|
31
|
+
#
|
32
|
+
# 出典: 酒造教本 P48
|
33
|
+
attr_reader :steaming_ratio
|
34
|
+
|
35
|
+
def steamed
|
36
|
+
weight + weight * steaming_ratio
|
37
|
+
end
|
38
|
+
|
39
|
+
# 放冷
|
40
|
+
#
|
41
|
+
# 冷却法で若干異なるが蒸米の冷却により掛米で白米重量の10%、麹米で8%程度の水が失われる
|
42
|
+
# 出典: 酒造教本 P49
|
43
|
+
#
|
44
|
+
# 麹を造るのに適した蒸米は、引込時の吸水率が33%を理想とし、許容幅はプラスマイナス1%である
|
45
|
+
# 出典: 酒造教本 P59
|
46
|
+
attr_reader :cooling_ratio
|
47
|
+
|
48
|
+
def cooled
|
49
|
+
weight + weight * cooling_ratio
|
50
|
+
end
|
51
|
+
|
52
|
+
# Product.base_dateからの日数差
|
53
|
+
attr_reader :interval_days
|
8
54
|
end
|
9
55
|
end
|
10
56
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Toji
|
2
|
+
module Ingredient
|
3
|
+
module Tanekoji
|
4
|
+
include Base
|
5
|
+
|
6
|
+
# 麹 (belongs_to: Toji::Ingredient::Koji)
|
7
|
+
attr_reader :koji
|
8
|
+
|
9
|
+
# 種麹の種類
|
10
|
+
attr_reader :brand
|
11
|
+
|
12
|
+
# 種麹
|
13
|
+
#
|
14
|
+
# 総破精麹を造るには、種麹の量を麹米100kgあたり種麹100gとする
|
15
|
+
# 突き破精麹を造るには、種麹の量を麹米100kgあたり種麹80gとする
|
16
|
+
#
|
17
|
+
# 出典: 酒造教本 P66
|
18
|
+
attr_reader :ratio
|
19
|
+
|
20
|
+
def weight
|
21
|
+
koji.weight * ratio
|
22
|
+
end
|
23
|
+
|
24
|
+
def group_key
|
25
|
+
[brand, ratio].join(":")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Toji
|
2
|
+
module Ingredient
|
3
|
+
module Water
|
4
|
+
include Base
|
5
|
+
|
6
|
+
# 汲水
|
7
|
+
attr_accessor :weight
|
8
|
+
|
9
|
+
# 硬度
|
10
|
+
attr_reader :calcium_hardness
|
11
|
+
attr_reader :magnesium_hardness
|
12
|
+
|
13
|
+
def group_key
|
14
|
+
[calcium_hardness, magnesium_hardness].join(":")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Toji
|
2
|
+
module Ingredient
|
3
|
+
module Yeast
|
4
|
+
include Base
|
5
|
+
|
6
|
+
# 酵母
|
7
|
+
attr_accessor :weight
|
8
|
+
|
9
|
+
# 単位 (ex: ampoule, gram, ml)
|
10
|
+
attr_reader :unit
|
11
|
+
|
12
|
+
# 酵母名、協会酵母番号
|
13
|
+
attr_reader :brand
|
14
|
+
|
15
|
+
def group_key
|
16
|
+
[brand, unit].join(":")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'toji/processing/base'
|
2
|
+
require 'toji/processing/rice_processing'
|
3
|
+
require 'toji/processing/koji_processing'
|
4
|
+
require 'toji/processing/kake_processing'
|
5
|
+
|
6
|
+
require 'toji/processing/soaked_rice'
|
7
|
+
require 'toji/processing/soaked_rice_element'
|
8
|
+
require 'toji/processing/steamed_rice'
|
9
|
+
require 'toji/processing/steamed_rice_element'
|
10
|
+
require 'toji/processing/cooled_rice'
|
11
|
+
require 'toji/processing/cooled_rice_element'
|
12
|
+
require 'toji/processing/dekoji'
|
13
|
+
require 'toji/processing/dekoji_element'
|
14
|
+
|
15
|
+
module Toji
|
16
|
+
module Processing
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Toji
|
2
|
+
module Processing
|
3
|
+
module CooledRice
|
4
|
+
# 親 (belongs_to: Toji::Processing::RiceProcessing)
|
5
|
+
attr_reader :processing
|
6
|
+
|
7
|
+
# 要素 (has_many: Toji::Processing::CooledRiceElement)
|
8
|
+
attr_reader :elements
|
9
|
+
|
10
|
+
# 放冷後蒸米総重量
|
11
|
+
def weight
|
12
|
+
(elements || []).map(&:weight).sum
|
13
|
+
end
|
14
|
+
|
15
|
+
# 放冷後蒸米歩合
|
16
|
+
def cooling_ratio
|
17
|
+
raw_weight = processing.soaked_rice.weight.to_f
|
18
|
+
(weight.to_f - raw_weight) / raw_weight
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Toji
|
2
|
+
module Processing
|
3
|
+
module Dekoji
|
4
|
+
# 親 (belongs_to: Toji::Processing::RiceProcessing)
|
5
|
+
attr_reader :processing
|
6
|
+
|
7
|
+
# 要素 (has_many: Toji::Processing::DekojiElement)
|
8
|
+
attr_reader :elements
|
9
|
+
|
10
|
+
# 出麹総重量
|
11
|
+
def weight
|
12
|
+
(elements || []).map(&:weight).sum
|
13
|
+
end
|
14
|
+
|
15
|
+
# 出麹歩合
|
16
|
+
def dekoji_ratio
|
17
|
+
raw_weight = processing.soaked_rice.weight.to_f
|
18
|
+
(weight.to_f - raw_weight) / raw_weight
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Toji
|
2
|
+
module Processing
|
3
|
+
module RiceProcessing
|
4
|
+
include Base
|
5
|
+
|
6
|
+
# 目標値 (Toji::Ingredient::Rice)
|
7
|
+
attr_reader :expect
|
8
|
+
|
9
|
+
# 浸漬実績値 (Toji::Processing::SoakedRice)
|
10
|
+
attr_reader :soaked_rice
|
11
|
+
|
12
|
+
# 蒸米実績値 (Toji::Processing::SteamedRice)
|
13
|
+
attr_reader :steamed_rice
|
14
|
+
|
15
|
+
# 放冷実績値 (Toji::Processing::CooledRice)
|
16
|
+
attr_reader :cooled_rice
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|