zakuro 0.0.2 → 0.1.3
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/.rubocop.yml +3 -0
- data/README.md +102 -42
- data/doc/operation.md +25 -0
- data/doc/operation/csv/month.csv +202 -0
- data/doc/operation/operation.xlsx +0 -0
- data/doc/operation/transfer.rb +77 -0
- data/lib/zakuro/calculation/base/multi_gengou.rb +101 -0
- data/lib/zakuro/calculation/base/multi_gengou_roller.rb +218 -0
- data/lib/zakuro/calculation/base/year.rb +107 -0
- data/lib/zakuro/calculation/cycle/abstract_remainder.rb +459 -0
- data/lib/zakuro/calculation/cycle/abstract_solar_term.rb +151 -0
- data/lib/zakuro/calculation/cycle/zodiac.rb +106 -0
- data/lib/zakuro/calculation/monthly/first_day.rb +45 -0
- data/lib/zakuro/calculation/monthly/initialized_month.rb +120 -0
- data/lib/zakuro/calculation/monthly/month.rb +184 -0
- data/lib/zakuro/calculation/monthly/month_label.rb +88 -0
- data/lib/zakuro/calculation/monthly/operated_month.rb +201 -0
- data/lib/zakuro/calculation/range/full_range.rb +210 -0
- data/lib/zakuro/calculation/range/operated_range.rb +134 -0
- data/lib/zakuro/calculation/range/operated_solar_terms.rb +201 -0
- data/lib/zakuro/calculation/range/transfer/western_date_allocation.rb +76 -0
- data/lib/zakuro/calculation/range/transfer/year_boundary.rb +142 -0
- data/lib/zakuro/calculation/specifier/single_day.rb +109 -0
- data/lib/zakuro/calculation/summary/single.rb +129 -0
- data/lib/zakuro/condition.rb +17 -13
- data/lib/zakuro/era/japan/gengou.rb +106 -0
- data/lib/zakuro/era/japan/gengou/parser.rb +167 -0
- data/lib/zakuro/era/japan/gengou/type.rb +178 -0
- data/lib/zakuro/era/japan/gengou/validator.rb +236 -0
- data/lib/zakuro/era/japan/reki.rb +91 -0
- data/lib/zakuro/era/{gengou → japan/yaml}/set-001-until-south.yaml +0 -0
- data/lib/zakuro/era/{gengou → japan/yaml}/set-002-from-north.yaml +0 -0
- data/lib/zakuro/era/{gengou → japan/yaml}/set-003-modern.yaml +1 -1
- data/lib/zakuro/era/western.rb +1 -1
- data/lib/zakuro/merchant.rb +2 -2
- data/lib/zakuro/operation/month/parser.rb +373 -0
- data/lib/zakuro/operation/month/type.rb +453 -0
- data/lib/zakuro/operation/month/validator.rb +802 -0
- data/lib/zakuro/operation/operation.rb +66 -0
- data/lib/zakuro/operation/yaml/month.yaml +6452 -0
- data/lib/zakuro/output/error.rb +7 -4
- data/lib/zakuro/output/logger.rb +50 -47
- data/lib/zakuro/output/response.rb +146 -143
- data/lib/zakuro/result/core.rb +52 -0
- data/lib/zakuro/result/data.rb +187 -0
- data/lib/zakuro/result/operation.rb +114 -0
- data/lib/zakuro/result/result.rb +37 -0
- data/lib/zakuro/{output → tools}/stringifier.rb +16 -9
- data/lib/zakuro/tools/typeof.rb +33 -0
- data/lib/zakuro/version.rb +1 -1
- data/lib/zakuro/version/abstract_version.rb +1 -1
- data/lib/zakuro/version/context.rb +23 -0
- data/lib/zakuro/version/senmyou/cycle/remainder.rb +63 -0
- data/lib/zakuro/version/senmyou/cycle/solar_term.rb +31 -0
- data/lib/zakuro/version/senmyou/monthly/lunar_phase.rb +186 -182
- data/lib/zakuro/version/senmyou/range/annual_range.rb +164 -0
- data/lib/zakuro/version/senmyou/senmyou.rb +10 -4
- data/lib/zakuro/version/senmyou/stella/lunar_orbit.rb +7 -7
- data/lib/zakuro/version/senmyou/stella/solar_average.rb +103 -138
- data/lib/zakuro/version/senmyou/stella/solar_location.rb +213 -0
- data/lib/zakuro/version/senmyou/stella/solar_orbit.rb +6 -191
- data/lib/zakuro/version/senmyou/stella/winter_solstice.rb +4 -4
- data/lib/zakuro/version/version_class_resolver.rb +62 -0
- data/lib/zakuro/version_factory.rb +3 -3
- metadata +49 -20
- data/lib/zakuro/cycle/abstract_remainder.rb +0 -457
- data/lib/zakuro/cycle/zodiac.rb +0 -103
- data/lib/zakuro/era/japan.rb +0 -660
- data/lib/zakuro/output/result.rb +0 -219
- data/lib/zakuro/version/senmyou/base/era.rb +0 -83
- data/lib/zakuro/version/senmyou/base/multi_gengou.rb +0 -98
- data/lib/zakuro/version/senmyou/base/multi_gengou_roller.rb +0 -205
- data/lib/zakuro/version/senmyou/base/remainder.rb +0 -60
- data/lib/zakuro/version/senmyou/base/solar_term.rb +0 -66
- data/lib/zakuro/version/senmyou/base/year.rb +0 -104
- data/lib/zakuro/version/senmyou/monthly/month.rb +0 -122
- data/lib/zakuro/version/senmyou/summary/annual_range.rb +0 -186
- data/lib/zakuro/version/senmyou/summary/full_range.rb +0 -216
- data/lib/zakuro/version/senmyou/summary/specifier.rb +0 -100
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative './version_class_resolver'
|
4
|
+
|
5
|
+
# :nodoc:
|
6
|
+
module Zakuro
|
7
|
+
#
|
8
|
+
# Context 暦コンテキスト
|
9
|
+
#
|
10
|
+
class Context
|
11
|
+
attr_reader :version_name
|
12
|
+
attr_reader :resolver
|
13
|
+
|
14
|
+
VERSION_NAMES = %w[Genka Gihou Taien Senmyou Joukyou Kansei Tenpou Gregorio].freeze
|
15
|
+
|
16
|
+
def initialize(version_name:)
|
17
|
+
raise ArgumentError.new, 'invalid version' unless VERSION_NAMES.include?(version_name)
|
18
|
+
|
19
|
+
@version_name = version_name
|
20
|
+
@resolver = VersionClassResolver.new(version_name: version_name)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../../calculation/cycle/abstract_remainder'
|
4
|
+
|
5
|
+
# :nodoc:
|
6
|
+
module Zakuro
|
7
|
+
# :nodoc:
|
8
|
+
module Senmyou
|
9
|
+
# :nodoc:
|
10
|
+
module Cycle
|
11
|
+
#
|
12
|
+
# Remainder 宣明暦の時刻情報(大余小余)
|
13
|
+
#
|
14
|
+
# * 「15日1835分5秒」のような形式で表される
|
15
|
+
# * 分は8400で一日に繰り上げる
|
16
|
+
# * 秒は基本的に1/8分で、8秒で1分に繰り上げる。ただし、月補正値は1分に100秒とするなど基数の変更がありえる
|
17
|
+
# * 十干十二支(60日)を上限とした「日時分秒」の情報で、日付(date)/時刻(time)と部分的に重なる概念
|
18
|
+
#
|
19
|
+
class Remainder < Calculation::Cycle::AbstractRemainder
|
20
|
+
# @return [Integer] 統法(1日=8400分)
|
21
|
+
DAY = 8400
|
22
|
+
# @return [Integer] 分(1分=8秒)
|
23
|
+
MINUTE = 8
|
24
|
+
|
25
|
+
#
|
26
|
+
# 初期化
|
27
|
+
#
|
28
|
+
# @param [Integer] day 大余("日"に相当)
|
29
|
+
# @param [Integer] minute 小余("分"に相当)
|
30
|
+
# @param [Integer] second 秒
|
31
|
+
# @param [Integer] total 繰り上げなしの小余
|
32
|
+
#
|
33
|
+
def initialize(day: -1, minute: -1, second: -1, total: -1)
|
34
|
+
super(base_day: DAY, base_mitune: MINUTE,
|
35
|
+
day: day, minute: minute, second: second, total: total)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
#
|
40
|
+
# LunarRemainder 月の位相計算向け時刻情報(大余小余)
|
41
|
+
#
|
42
|
+
class LunarRemainder < Calculation::Cycle::AbstractRemainder
|
43
|
+
# @return [Integer] 統法(1日=8400分)
|
44
|
+
DAY = 8400
|
45
|
+
# @return [Integer] 分(1分=100秒)
|
46
|
+
MINUTE = 100
|
47
|
+
|
48
|
+
#
|
49
|
+
# 初期化
|
50
|
+
#
|
51
|
+
# @param [Integer] day 大余("日"に相当)
|
52
|
+
# @param [Integer] minute 小余("分"に相当)
|
53
|
+
# @param [Integer] second 秒
|
54
|
+
# @param [Integer] total 繰り上げなしの小余
|
55
|
+
#
|
56
|
+
def initialize(day: -1, minute: -1, second: -1, total: -1)
|
57
|
+
super(base_day: DAY, base_mitune: MINUTE,
|
58
|
+
day: day, minute: minute, second: second, total: total)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../../calculation/cycle/abstract_solar_term'
|
4
|
+
require_relative './remainder'
|
5
|
+
|
6
|
+
# :nodoc:
|
7
|
+
module Zakuro
|
8
|
+
# :nodoc:
|
9
|
+
module Senmyou
|
10
|
+
# :nodoc:
|
11
|
+
module Cycle
|
12
|
+
#
|
13
|
+
# SolarTerm 二十四節気
|
14
|
+
#
|
15
|
+
class SolarTerm < Calculation::Cycle::AbstractSolarTerm
|
16
|
+
# @return [Remainder] 気策(24分の1年)
|
17
|
+
SOLAR_TERM_AVERAGE = Remainder.new(day: 15, minute: 1835, second: 5)
|
18
|
+
|
19
|
+
#
|
20
|
+
# 初期化
|
21
|
+
#
|
22
|
+
# @param [Integer] index 連番
|
23
|
+
# @param [Remainder] remainder 時刻情報(大余小余)
|
24
|
+
#
|
25
|
+
def initialize(index: -1, remainder: Remainder.new)
|
26
|
+
super(index: index, remainder: remainder, average: SOLAR_TERM_AVERAGE)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -8,212 +8,216 @@ require_relative '../stella/winter_solstice'
|
|
8
8
|
module Zakuro
|
9
9
|
# :nodoc:
|
10
10
|
module Senmyou
|
11
|
-
# :
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
# @return [Logger] ロガー
|
29
|
-
LOGGER = Logger.new(location: 'lunar_phase')
|
30
|
-
|
31
|
-
# @return [Array<String>] 月内の弦
|
32
|
-
PHASE_INDEXES = %w[朔日 上弦 望月 下弦].freeze
|
33
|
-
|
34
|
-
# @return [Integer] 西暦年
|
35
|
-
attr_reader :western_year
|
36
|
-
# @return [Remainder]] 経
|
37
|
-
attr_reader :average_remainder
|
38
|
-
# @return [True] 初回計算
|
39
|
-
# @return [False] 次回以降計算
|
40
|
-
attr_reader :first
|
41
|
-
# @return [SolarTerm] 二十四節気(入定気)
|
42
|
-
attr_reader :solar_term
|
43
|
-
# @return [Remainder] 入暦
|
44
|
-
attr_reader :moon_remainder
|
45
|
-
# @return [True] 進(遠地点より数える)
|
46
|
-
# @return [False] 退(近地点より数える)
|
47
|
-
attr_reader :is_forward
|
48
|
-
# @return [Integer] 弦
|
49
|
-
attr_reader :phase_index
|
11
|
+
# :nodoc:
|
12
|
+
module Monthly
|
13
|
+
# :reek:TooManyInstanceVariables { max_instance_variables: 7 }
|
14
|
+
|
15
|
+
#
|
16
|
+
# LunarPhase 月の位相
|
17
|
+
#
|
18
|
+
class LunarPhase
|
19
|
+
#
|
20
|
+
# QuarterMoon 弦
|
21
|
+
#
|
22
|
+
module QuarterMoon
|
23
|
+
# @return [Remainder] 弦(1分=8秒)
|
24
|
+
DEFAULT = Cycle::Remainder.new(day: 7, minute: 3214, second: 2)
|
25
|
+
# @return [Remainder] 弦(1分=100秒)
|
26
|
+
BASE_HUNDRED = Cycle::LunarRemainder.new(day: 7, minute: 3214, second: 25)
|
27
|
+
end
|
50
28
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
@
|
58
|
-
|
59
|
-
@
|
60
|
-
|
61
|
-
|
62
|
-
#
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
@
|
67
|
-
|
68
|
-
@
|
69
|
-
|
70
|
-
|
71
|
-
@
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
29
|
+
# @return [Output::Logger] ロガー
|
30
|
+
LOGGER = Output::Logger.new(location: 'lunar_phase')
|
31
|
+
|
32
|
+
# @return [Array<String>] 月内の弦
|
33
|
+
PHASE_INDEXES = %w[朔日 上弦 望月 下弦].freeze
|
34
|
+
|
35
|
+
# @return [Integer] 西暦年
|
36
|
+
attr_reader :western_year
|
37
|
+
# @return [Remainder]] 経
|
38
|
+
attr_reader :average_remainder
|
39
|
+
# @return [True] 初回計算
|
40
|
+
# @return [False] 次回以降計算
|
41
|
+
attr_reader :first
|
42
|
+
# @return [SolarTerm] 二十四節気(入定気)
|
43
|
+
attr_reader :solar_term
|
44
|
+
# @return [Remainder] 入暦
|
45
|
+
attr_reader :moon_remainder
|
46
|
+
# @return [True] 進(遠地点より数える)
|
47
|
+
# @return [False] 退(近地点より数える)
|
48
|
+
attr_reader :is_forward
|
49
|
+
# @return [Integer] 弦
|
50
|
+
attr_reader :phase_index
|
51
|
+
|
52
|
+
#
|
53
|
+
# 初期化
|
54
|
+
#
|
55
|
+
# @param [Integer] western_year 西暦年
|
56
|
+
#
|
57
|
+
def initialize(western_year:)
|
58
|
+
@western_year = western_year
|
59
|
+
# 経
|
60
|
+
@average_remainder = WinterSolstice.calc_averaged_last_november_1st(
|
61
|
+
western_year: @western_year
|
62
|
+
)
|
63
|
+
# 天正閏余
|
64
|
+
winter_solstice_age = \
|
65
|
+
WinterSolstice.calc_moon_age(western_year: @western_year)
|
66
|
+
# 入定気
|
67
|
+
@solar_term = Cycle::SolarTerm.new(remainder: winter_solstice_age)
|
68
|
+
# 入暦
|
69
|
+
@moon_remainder = Cycle::LunarRemainder.new(total: 0).add!(winter_solstice_age)
|
70
|
+
|
71
|
+
@is_forward = false
|
72
|
+
@first = true
|
73
|
+
|
74
|
+
# 弦
|
75
|
+
@phase_index = 0
|
76
|
+
end
|
76
77
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
78
|
+
#
|
79
|
+
# 次の弦に進める
|
80
|
+
#
|
81
|
+
# @return [Remainder] 定朔
|
82
|
+
#
|
83
|
+
def next_phase
|
84
|
+
adjusted = current_remainder
|
84
85
|
|
85
|
-
|
86
|
+
@first = false if @first
|
86
87
|
|
87
|
-
|
88
|
+
add_quarter_moon_size
|
88
89
|
|
89
|
-
|
90
|
-
|
90
|
+
adjusted
|
91
|
+
end
|
91
92
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
93
|
+
#
|
94
|
+
# 次の月に進める
|
95
|
+
# @note 進めた後の月の定朔ではなく、当月のものを返却する
|
96
|
+
#
|
97
|
+
# @return [Remainder] 当月初の定朔
|
98
|
+
#
|
99
|
+
def next_month
|
100
|
+
result = nil
|
101
|
+
PHASE_INDEXES.each_with_index do |_phase, index|
|
102
|
+
adjust = next_phase
|
103
|
+
result = adjust if index.zero?
|
104
|
+
end
|
105
|
+
|
106
|
+
result
|
103
107
|
end
|
104
108
|
|
105
|
-
|
106
|
-
|
109
|
+
private
|
110
|
+
|
111
|
+
#
|
112
|
+
# 次の弦に進める
|
113
|
+
#
|
114
|
+
# @return [Integer] 弦
|
115
|
+
#
|
116
|
+
def next_phase_index
|
117
|
+
@phase_index += 1
|
118
|
+
@phase_index = 0 if @phase_index >= PHASE_INDEXES.size
|
119
|
+
@phase_index
|
120
|
+
end
|
107
121
|
|
108
|
-
|
122
|
+
#
|
123
|
+
# 朔月(月初)かを確認する
|
124
|
+
#
|
125
|
+
# @return [True] 朔月である
|
126
|
+
# @return [False] 朔月ではない
|
127
|
+
#
|
128
|
+
def first_phase?
|
129
|
+
@phase_index.zero?
|
130
|
+
end
|
109
131
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
@phase_index = 0 if @phase_index >= PHASE_INDEXES.size
|
118
|
-
@phase_index
|
119
|
-
end
|
132
|
+
#
|
133
|
+
# 朔月のみログ出力する
|
134
|
+
#
|
135
|
+
# @param [String] messages メッセージ(可変長)
|
136
|
+
#
|
137
|
+
def debug(*messages)
|
138
|
+
return unless first_phase?
|
120
139
|
|
121
|
-
|
122
|
-
|
123
|
-
#
|
124
|
-
# @return [True] 朔月である
|
125
|
-
# @return [False] 朔月ではない
|
126
|
-
#
|
127
|
-
def first_phase?
|
128
|
-
@phase_index.zero?
|
129
|
-
end
|
130
|
-
|
131
|
-
#
|
132
|
-
# 朔月のみログ出力する
|
133
|
-
#
|
134
|
-
# @param [String] messages メッセージ(可変長)
|
135
|
-
#
|
136
|
-
def debug(*messages)
|
137
|
-
return unless first_phase?
|
140
|
+
LOGGER.debug(*messages)
|
141
|
+
end
|
138
142
|
|
139
|
-
|
140
|
-
end
|
143
|
+
# :reek:TooManyStatements { max_statements: 6 }
|
141
144
|
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
145
|
+
#
|
146
|
+
# 現在の定朔を取得する
|
147
|
+
#
|
148
|
+
# @return [Remainder] 定朔
|
149
|
+
#
|
150
|
+
def current_remainder
|
151
|
+
debug("@average_remainder.format: #{@average_remainder.format}")
|
149
152
|
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
153
|
+
sum = correction_value
|
154
|
+
adjusted = @average_remainder.add(
|
155
|
+
Cycle::Remainder.new(day: 0, minute: sum, second: 0)
|
156
|
+
)
|
157
|
+
adjusted.up_on_new_moon!
|
155
158
|
|
156
|
-
|
159
|
+
debug("result: #{adjusted.format}")
|
157
160
|
|
158
|
-
|
159
|
-
|
161
|
+
adjusted
|
162
|
+
end
|
160
163
|
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
164
|
+
#
|
165
|
+
# 補正値を得る
|
166
|
+
#
|
167
|
+
# @return [Integer] 補正値
|
168
|
+
#
|
169
|
+
def correction_value
|
170
|
+
sun = correction_solar_value
|
171
|
+
moon = correction_moon_value
|
169
172
|
|
170
|
-
|
173
|
+
sum = sun + moon
|
171
174
|
|
172
|
-
|
175
|
+
debug("sun: #{sun}", "moon: #{moon}", "sun + moon : #{sum}")
|
173
176
|
|
174
|
-
|
175
|
-
|
177
|
+
sum
|
178
|
+
end
|
176
179
|
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
180
|
+
#
|
181
|
+
# 太陽運動の補正値を得る
|
182
|
+
#
|
183
|
+
# @return [Integer] 太陽運動の補正値
|
184
|
+
#
|
185
|
+
def correction_solar_value
|
186
|
+
@solar_term = SolarLocation.get(
|
187
|
+
solar_term: @solar_term
|
188
|
+
)
|
189
|
+
debug("@solar_term.remainder: #{@solar_term.remainder.format(form: '%d-%d.%d')}")
|
190
|
+
debug("@solar_term.index: #{@solar_term.index}")
|
191
|
+
|
192
|
+
SolarOrbit.calc_sun_orbit_value(solar_term: @solar_term)
|
193
|
+
end
|
191
194
|
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
195
|
+
#
|
196
|
+
# 月運動の補正値を得る
|
197
|
+
#
|
198
|
+
# @return [Integer] 月運動の補正値
|
199
|
+
#
|
200
|
+
def correction_moon_value
|
201
|
+
@moon_remainder, @is_forward = \
|
202
|
+
LunarOrbit.calc_moon_point(remainder: @moon_remainder,
|
203
|
+
western_year: @western_year,
|
204
|
+
is_forward: @is_forward,
|
205
|
+
first: @first)
|
206
|
+
|
207
|
+
debug("@moon_remainder.format: #{@moon_remainder.format}")
|
208
|
+
debug("@is_forward: #{@is_forward}")
|
209
|
+
|
210
|
+
LunarOrbit.calc_moon_orbit_value(remainder_month: @moon_remainder,
|
211
|
+
is_forward: @is_forward)
|
212
|
+
end
|
210
213
|
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
214
|
+
def add_quarter_moon_size
|
215
|
+
@average_remainder.add!(QuarterMoon::DEFAULT)
|
216
|
+
@solar_term.remainder.add!(QuarterMoon::DEFAULT)
|
217
|
+
@moon_remainder.add!(QuarterMoon::BASE_HUNDRED)
|
215
218
|
|
216
|
-
|
219
|
+
next_phase_index
|
220
|
+
end
|
217
221
|
end
|
218
222
|
end
|
219
223
|
end
|