zakuro 0.8.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +38 -160
  3. data/VERSION +1 -1
  4. data/doc/condition.md +36 -0
  5. data/doc/dropped_date.md +41 -0
  6. data/doc/expection.md +108 -0
  7. data/doc/operation/csv/month.csv +100 -79
  8. data/doc/operation/operation.xlsx +0 -0
  9. data/doc/usage.md +120 -0
  10. data/doc/vanished_date.md +86 -0
  11. data/doc/version/daien.md +163 -0
  12. data/doc/version/genka.md +116 -0
  13. data/doc/version/gihou.md +172 -0
  14. data/doc/version/section/common_post_process.md +60 -0
  15. data/doc/version/section/common_pre_process.md +185 -0
  16. data/doc/version/section/const.md +45 -0
  17. data/doc/version/section/decimal.md +101 -0
  18. data/doc/version/section/lunisolar_calendar.md +55 -0
  19. data/doc/version/section/senmyou_november_1st.md +41 -0
  20. data/{lib/zakuro/version/senmyou/README.md → doc/version/senmyou.md} +15 -168
  21. data/lib/zakuro/calculation/cycle/abstract_remainder.rb +58 -0
  22. data/lib/zakuro/calculation/monthly/first_day.rb +9 -1
  23. data/lib/zakuro/calculation/option/vanished_date/abstract_parameter.rb +40 -0
  24. data/lib/zakuro/calculation/option/vanished_date/location.rb +84 -0
  25. data/lib/zakuro/calculation/range/medieval_annual_range.rb +5 -3
  26. data/lib/zakuro/calculation/range/transfer/gengou_scroller.rb +1 -0
  27. data/lib/zakuro/calculation/stella/lunar/abstract_location.rb +6 -2
  28. data/lib/zakuro/calculation/stella/lunar/choukei_value.rb +14 -0
  29. data/lib/zakuro/calculation/summary/internal/option.rb +59 -4
  30. data/lib/zakuro/context/option.rb +17 -0
  31. data/lib/zakuro/context/version_class_resolver.rb +17 -1
  32. data/lib/zakuro/operation/yaml/month.yaml +955 -281
  33. data/lib/zakuro/result/data/option/vanished_date/calculation.rb +45 -0
  34. data/lib/zakuro/result/data/option/vanished_date/option.rb +47 -0
  35. data/lib/zakuro/result/data/single_day.rb +2 -0
  36. data/lib/zakuro/version/daien/const/number.rb +2 -0
  37. data/lib/zakuro/version/daien/const/remainder.rb +7 -2
  38. data/lib/zakuro/version/daien/cycle/remainder.rb +38 -20
  39. data/lib/zakuro/version/daien/monthly/lunar_phase.rb +2 -4
  40. data/lib/zakuro/version/daien/option/dropped_date/parameter.rb +5 -3
  41. data/lib/zakuro/version/daien/option/vanished_date/parameter.rb +33 -0
  42. data/lib/zakuro/version/daien/stella/lunar/location.rb +5 -8
  43. data/lib/zakuro/version/genka/cycle/remainder.rb +6 -2
  44. data/lib/zakuro/version/genka/monthly/lunar_phase.rb +14 -3
  45. data/lib/zakuro/version/genka/option/vanished_date/parameter.rb +31 -0
  46. data/lib/zakuro/version/gihou/const/remainder.rb +1 -5
  47. data/lib/zakuro/version/gihou/cycle/remainder.rb +0 -26
  48. data/lib/zakuro/version/gihou/monthly/lunar_phase.rb +2 -4
  49. data/lib/zakuro/version/gihou/option/vanished_date/parameter.rb +31 -0
  50. data/lib/zakuro/version/gihou/stella/lunar/location.rb +5 -8
  51. data/lib/zakuro/version/senmyou/const/number.rb +3 -1
  52. data/lib/zakuro/version/senmyou/const/remainder.rb +3 -0
  53. data/lib/zakuro/version/senmyou/cycle/remainder.rb +17 -34
  54. data/lib/zakuro/version/senmyou/monthly/lunar_phase.rb +5 -5
  55. data/lib/zakuro/version/senmyou/option/vanished_date/parameter.rb +33 -0
  56. data/lib/zakuro/version/senmyou/stella/lunar/location.rb +6 -8
  57. data/lib/zakuro/version/senmyou/stella/lunar/value.rb +9 -0
  58. metadata +24 -3
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Zakuro
5
+ #
6
+ # Result 演算結果
7
+ #
8
+ module Result
9
+ #
10
+ # データ部
11
+ #
12
+ module Data
13
+ #
14
+ # Option オプション
15
+ #
16
+ module Option
17
+ #
18
+ # VanishedDate 滅日
19
+ #
20
+ module VanishedDate
21
+ #
22
+ # Calculation 演算値
23
+ #
24
+ class Calculation
25
+ # @return [String] 大余小余(滅余)
26
+ attr_reader :remainder
27
+ # @return [String] 経朔
28
+ attr_reader :average_remainder
29
+
30
+ #
31
+ # 初期化
32
+ #
33
+ # @param [String] remainder 大余小余(滅余)
34
+ # @param [String] average_remainder 経朔
35
+ #
36
+ def initialize(remainder: '', average_remainder: '')
37
+ @remainder = remainder
38
+ @average_remainder = average_remainder
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../abstract_option'
4
+
5
+ require_relative './calculation'
6
+
7
+ # :nodoc:
8
+ module Zakuro
9
+ #
10
+ # Result 演算結果
11
+ #
12
+ module Result
13
+ #
14
+ # データ部
15
+ #
16
+ module Data
17
+ #
18
+ # Option オプション
19
+ #
20
+ module Option
21
+ #
22
+ # VanishedDate 滅日
23
+ #
24
+ module VanishedDate
25
+ #
26
+ # Option 滅日集約
27
+ #
28
+ class Option < AbstractOption
29
+ # @return [Calculation] 演算値
30
+ attr_reader :calculation
31
+
32
+ #
33
+ # 初期化
34
+ #
35
+ # @param [True, False] matched オプション値有無
36
+ # @param [Calculation] calculation 演算値
37
+ #
38
+ def initialize(matched: false, calculation: Calculation.new)
39
+ super(matched: matched)
40
+ @calculation = calculation
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -6,6 +6,8 @@ require_relative './option/abstract_option'
6
6
 
7
7
  require_relative './option/dropped_date/option'
8
8
 
9
+ require_relative './option/vanished_date/option'
10
+
9
11
  require_relative 'year'
10
12
 
11
13
  require_relative 'month'
@@ -38,6 +38,8 @@ module Zakuro
38
38
  REMAINDER_ALL_YEAR = 15_943
39
39
  # @return [Integer] 旬周(60日) DAY * 60
40
40
  SIXTY_DAYS = 182_400
41
+ # @return [Integer] 朔虚分: (30 * 3040) % (29 * 3040 + 1613)
42
+ REMAINDER_IDEAL_MONTH = 1427
41
43
  end
42
44
 
43
45
  #
@@ -29,6 +29,12 @@ module Zakuro
29
29
  #
30
30
  # @return [Cycle::Remainder] 弦(1分=80秒)
31
31
  QUARTER = Cycle::Remainder.new(day: 7, minute: 1163, second: 6)
32
+
33
+ # @return [Cycle::Remainder] 有没判定
34
+ DROPPED_DATE_LIMIT = Cycle::Remainder.new(day: 0, minute: 2375, second: 17)
35
+
36
+ # @return [Cycle::Remainder] 有滅判定
37
+ VANISHED_DATE_LIMIT = Cycle::Remainder.new(day: 0, minute: 1427, second: 0)
32
38
  end
33
39
 
34
40
  #
@@ -44,8 +50,7 @@ module Zakuro
44
50
  # * 0.25 * 80(1分=80秒) = 20
45
51
  #
46
52
  # @return [Cycle::LunarRemainder] 弦(1分=80秒)
47
- # TODO: 秒が20では通らない。少なくとも0.01247は必要になる
48
- QUARTER = Cycle::LunarRemainder.new(day: 7, minute: 1163, second: 20.01247)
53
+ QUARTER = Cycle::LunarRemainder.new(day: 7, minute: 1163, second: 20)
49
54
  end
50
55
  end
51
56
  end
@@ -32,19 +32,6 @@ module Zakuro
32
32
  super(base_day: Const::Number::Cycle::DAY, base_minute: MINUTE,
33
33
  day: day, minute: minute, second: second, total: total)
34
34
  end
35
-
36
- #
37
- # 特定の文字フォーマットにして出力する
38
- #
39
- # @param [String] form フォーマット(大余、小余、秒それぞれを%dで指定する)
40
- #
41
- # @return [String] フォーマットした結果
42
- #
43
- def format(form: '%d-%d')
44
- return '' if invalid?
45
-
46
- super(form, @day, @minute, @second)
47
- end
48
35
  end
49
36
 
50
37
  #
@@ -66,18 +53,49 @@ module Zakuro
66
53
  super(base_day: Const::Number::Cycle::DAY, base_minute: MINUTE,
67
54
  day: day, minute: minute, second: second, total: total)
68
55
  end
56
+ end
57
+
58
+ #
59
+ # DroppedRemainder 没日の計算向け時刻情報(没余)
60
+ #
61
+ class DroppedRemainder < Calculation::Cycle::AbstractRemainder
62
+ # @return [Integer] 分(1分=24秒)
63
+ MINUTE = 24
69
64
 
70
65
  #
71
- # 特定の文字フォーマットにして出力する
72
- #
73
- # @param [String] form フォーマット(大余、小余、秒それぞれを%dで指定する)
66
+ # 初期化
74
67
  #
75
- # @return [String] フォーマットした結果
68
+ # @param [Integer] day 大余("日"に相当)
69
+ # @param [Integer] minute 小余("分"に相当)
70
+ # @param [Integer] second 秒
71
+ # @param [Integer] total 繰り上げなしの小余
76
72
  #
77
- def format(form: '%d-%d')
78
- return '' if invalid?
73
+ def initialize(day: -1, minute: -1, second: -1, total: -1)
74
+ # 小余 = 通余
75
+ super(base_day: Const::Number::Derivation::REMAINDER_ALL_YEAR, base_minute: MINUTE,
76
+ day: day, minute: minute, second: second, total: total)
77
+ end
78
+ end
79
+
80
+ #
81
+ # VanishedRemainder 滅日の計算向け時刻情報(滅余)
82
+ #
83
+ class VanishedRemainder < Calculation::Cycle::AbstractRemainder
84
+ # @return [Integer] 分(1分=24秒)
85
+ MINUTE = 24
79
86
 
80
- super(form, @day, @minute, @second)
87
+ #
88
+ # 初期化
89
+ #
90
+ # @param [Integer] day 大余("日"に相当)
91
+ # @param [Integer] minute 小余("分"に相当)
92
+ # @param [Integer] second 秒
93
+ # @param [Integer] total 繰り上げなしの小余
94
+ #
95
+ def initialize(day: -1, minute: -1, second: -1, total: -1)
96
+ # 小余 = 朔虚分
97
+ super(base_day: Const::Number::Derivation::REMAINDER_IDEAL_MONTH, base_minute: MINUTE,
98
+ day: day, minute: minute, second: second, total: total)
81
99
  end
82
100
  end
83
101
  end
@@ -64,7 +64,7 @@ module Zakuro
64
64
  # NOTE: 大衍暦では進朔しない
65
65
  # adjusted.up_on_new_moon!
66
66
 
67
- debug("result: #{adjusted.format}")
67
+ debug("result: #{adjusted.format(form: '%d-%d.%.5f')}")
68
68
 
69
69
  adjusted
70
70
  end
@@ -92,9 +92,7 @@ module Zakuro
92
92
 
93
93
  remainder = lunar_location.adjusted_remainder
94
94
 
95
- # debug("[lunar]remainder.format: #{remainder.format(form: '%d-%d-%.5f')}")
96
- # debug("[lunar]remainder.day: #{remainder.day}")
97
- # debug("[lunar]remainder.minute: #{remainder.minute}")
95
+ debug("[lunar]remainder.format: #{remainder.format(form: '%d-%d-%.5f')}")
98
96
 
99
97
  Lunar::Value.get(remainder: remainder)
100
98
  end
@@ -9,9 +9,9 @@ require_relative '../../cycle/remainder'
9
9
  # :nodoc:
10
10
  module Zakuro
11
11
  # :nodoc:
12
- module Senmyou
12
+ module Daien
13
13
  # :nodoc:
14
- module Daien
14
+ module Option
15
15
  # :nodoc:
16
16
  module DroppedDate
17
17
  #
@@ -22,7 +22,9 @@ module Zakuro
22
22
  # 初期化
23
23
  #
24
24
  def initialize
25
- super(valid: false)
25
+ super(valid: true, year: Const::Number::Cycle::YEAR,
26
+ limit: Const::Remainder::Solar::DROPPED_DATE_LIMIT,
27
+ remainder_class: Cycle::DroppedRemainder)
26
28
  end
27
29
  end
28
30
  end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../../calculation/option/vanished_date/abstract_parameter'
4
+
5
+ require_relative '../../const/number'
6
+ require_relative '../../const/remainder'
7
+ require_relative '../../cycle/remainder'
8
+
9
+ # :nodoc:
10
+ module Zakuro
11
+ # :nodoc:
12
+ module Daien
13
+ # :nodoc:
14
+ module Option
15
+ # :nodoc:
16
+ module VanishedDate
17
+ #
18
+ # Parameter 引数
19
+ #
20
+ class Parameter < Calculation::Option::VanishedDate::AbstractParameter
21
+ #
22
+ # 初期化
23
+ #
24
+ def initialize
25
+ super(valid: true,
26
+ limit: Const::Remainder::Solar::VANISHED_DATE_LIMIT,
27
+ remainder_class: Cycle::VanishedRemainder)
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -28,7 +28,11 @@ module Zakuro
28
28
  # @param [Integer] western_year 西暦年
29
29
  #
30
30
  def initialize(lunar_age:, western_year:)
31
- super(lunar_age: lunar_age, western_year: western_year)
31
+ super(
32
+ lunar_age: lunar_age,
33
+ quarter: QUARTER,
34
+ western_year: western_year
35
+ )
32
36
  end
33
37
 
34
38
  #
@@ -43,13 +47,6 @@ module Zakuro
43
47
  first
44
48
  end
45
49
 
46
- #
47
- # 弦の分だけ月地点を進める
48
- #
49
- def add_quarter
50
- remainder.add!(QUARTER)
51
- end
52
-
53
50
  private
54
51
 
55
52
  #
@@ -43,7 +43,9 @@ module Zakuro
43
43
  return '' if invalid?
44
44
 
45
45
  decimal = day + minute / base_day.to_f
46
- super(form, decimal.round(digit))
46
+
47
+ # NOTE: 親クラスを迂回する
48
+ Kernel.instance_method(:format).bind(self).call(form, decimal.round(digit))
47
49
  end
48
50
  end
49
51
 
@@ -84,7 +86,9 @@ module Zakuro
84
86
  # 具体的には、468年の中気は '55.7813' だが '55.7812' になる
85
87
  # これは '55.7812500' を4桁にした際に、境界値の少数点以下5桁目の '5' が切り捨てを受けたためである
86
88
  # format による四捨五入は避け、roundによる四捨五入を採用する
87
- super(form, decimal.round(digit))
89
+
90
+ # NOTE: 親クラスを迂回する
91
+ Kernel.instance_method(:format).bind(self).call(form, decimal.round(digit))
88
92
  end
89
93
  end
90
94
  end
@@ -47,7 +47,7 @@ module Zakuro
47
47
  #
48
48
  # 次の弦に進める
49
49
  #
50
- # @return [Remainder] 定朔
50
+ # @return [Remainder] 経朔
51
51
  #
52
52
  def next_phase
53
53
  adjusted = remainder.clone
@@ -59,9 +59,9 @@ module Zakuro
59
59
 
60
60
  #
61
61
  # 次の月に進める
62
- # @note 進めた後の月の定朔ではなく、当月のものを返却する
62
+ # @note 進めた後の月の経朔ではなく、当月のものを返却する
63
63
  #
64
- # @return [Remainder] 当月初の定朔
64
+ # @return [Remainder] 当月初の経朔
65
65
  #
66
66
  def next_month
67
67
  result = nil
@@ -73,6 +73,17 @@ module Zakuro
73
73
  result
74
74
  end
75
75
 
76
+ #
77
+ # 経朔を返す
78
+ #
79
+ # 元嘉暦には経朔しかないが他の暦と揃える
80
+ #
81
+ # @return [Remainder] 経朔
82
+ #
83
+ def average_remainder
84
+ @remainder
85
+ end
86
+
76
87
  private
77
88
 
78
89
  #
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../../calculation/option/vanished_date/abstract_parameter'
4
+
5
+ require_relative '../../const/number'
6
+ require_relative '../../const/remainder'
7
+ require_relative '../../cycle/remainder'
8
+
9
+ # :nodoc:
10
+ module Zakuro
11
+ # :nodoc:
12
+ module Genka
13
+ # :nodoc:
14
+ module Option
15
+ # :nodoc:
16
+ module VanishedDate
17
+ #
18
+ # Parameter 引数
19
+ #
20
+ class Parameter < Calculation::Option::VanishedDate::AbstractParameter
21
+ #
22
+ # 初期化
23
+ #
24
+ def initialize
25
+ super(valid: false)
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -42,11 +42,7 @@ module Zakuro
42
42
  # * 0.75 * 12(1分=12秒) = 9
43
43
  #
44
44
  # @return [Cycle::LunarRemainder] 弦(1分=12秒)
45
- # TODO: 9秒だと通らない。 0.00378 0.0208 の範囲内で通る
46
- # QUARTER = Cycle::LunarRemainder.new(day: 7, minute: 512, second: 9)
47
- # QUARTER = Cycle::LunarRemainder.new(day: 7, minute: 512, second: 9.00378)
48
- # QUARTER = Cycle::LunarRemainder.new(day: 7, minute: 512, second: 9.0208)
49
- QUARTER = Cycle::LunarRemainder.new(day: 7, minute: 512, second: 9.00378)
45
+ QUARTER = Cycle::LunarRemainder.new(day: 7, minute: 512, second: 9)
50
46
  end
51
47
  end
52
48
  end
@@ -29,19 +29,6 @@ module Zakuro
29
29
  super(base_day: Const::Number::Cycle::DAY, base_minute: MINUTE,
30
30
  day: day, minute: minute, second: second, total: total)
31
31
  end
32
-
33
- #
34
- # 特定の文字フォーマットにして出力する
35
- #
36
- # @param [String] form フォーマット(大余、小余、秒それぞれを%dで指定する)
37
- #
38
- # @return [String] フォーマットした結果
39
- #
40
- def format(form: '%d-%d')
41
- return '' if invalid?
42
-
43
- super(form, @day, @minute, @second)
44
- end
45
32
  end
46
33
 
47
34
  #
@@ -63,19 +50,6 @@ module Zakuro
63
50
  super(base_day: Const::Number::Cycle::DAY, base_minute: MINUTE,
64
51
  day: day, minute: minute, second: second, total: total)
65
52
  end
66
-
67
- #
68
- # 特定の文字フォーマットにして出力する
69
- #
70
- # @param [String] form フォーマット(大余、小余、秒それぞれを%dで指定する)
71
- #
72
- # @return [String] フォーマットした結果
73
- #
74
- def format(form: '%d-%d')
75
- return '' if invalid?
76
-
77
- super(form, @day, @minute, @second)
78
- end
79
53
  end
80
54
  end
81
55
  end
@@ -64,7 +64,7 @@ module Zakuro
64
64
  # NOTE: 儀鳳暦では進朔しない
65
65
  # adjusted.up_on_new_moon!
66
66
 
67
- debug("result: #{adjusted.format}")
67
+ debug("result: #{adjusted.format(form: '%d-%d.%.5f')}")
68
68
 
69
69
  adjusted
70
70
  end
@@ -94,9 +94,7 @@ module Zakuro
94
94
 
95
95
  remainder = lunar_location.adjusted_remainder
96
96
 
97
- # debug("[lunar]remainder.format: #{remainder.format(form: '%d-%d-%.5f')}")
98
- # debug("[lunar]remainder.day: #{remainder.day}")
99
- # debug("[lunar]remainder.minute: #{remainder.minute}")
97
+ debug("[lunar]remainder.format: #{remainder.format(form: '%d-%d-%.5f')}")
100
98
 
101
99
  Lunar::Value.get(remainder: remainder)
102
100
  end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../../calculation/option/vanished_date/abstract_parameter'
4
+
5
+ require_relative '../../const/number'
6
+ require_relative '../../const/remainder'
7
+ require_relative '../../cycle/remainder'
8
+
9
+ # :nodoc:
10
+ module Zakuro
11
+ # :nodoc:
12
+ module Gihou
13
+ # :nodoc:
14
+ module Option
15
+ # :nodoc:
16
+ module VanishedDate
17
+ #
18
+ # Parameter 引数
19
+ #
20
+ class Parameter < Calculation::Option::VanishedDate::AbstractParameter
21
+ #
22
+ # 初期化
23
+ #
24
+ def initialize
25
+ super(valid: false)
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -28,7 +28,11 @@ module Zakuro
28
28
  # @param [Integer] western_year 西暦年
29
29
  #
30
30
  def initialize(lunar_age:, western_year:)
31
- super(lunar_age: lunar_age, western_year: western_year)
31
+ super(
32
+ lunar_age: lunar_age,
33
+ quarter: QUARTER,
34
+ western_year: western_year
35
+ )
32
36
  end
33
37
 
34
38
  #
@@ -43,13 +47,6 @@ module Zakuro
43
47
  first
44
48
  end
45
49
 
46
- #
47
- # 弦の分だけ月地点を進める
48
- #
49
- def add_quarter
50
- remainder.add!(QUARTER)
51
- end
52
-
53
50
  private
54
51
 
55
52
  #
@@ -30,10 +30,12 @@ module Zakuro
30
30
  # Derivation 導出
31
31
  #
32
32
  module Derivation
33
- # @return [Integer] 通余: (YEAR - DAY * 12 * 30) = 44055
33
+ # @return [Integer] 通余: (YEAR - DAY * 12 * 30) = 44055
34
34
  REMAINDER_ALL_YEAR = 44_055
35
35
  # @return [Integer] 旬周(60日) DAY * 60
36
36
  SIXTY_DAYS = 504_000
37
+ # @return [Integer] 朔虚分: (30 * 8400) % 248057
38
+ REMAINDER_IDEAL_MONTH = 3943
37
39
  end
38
40
 
39
41
  #
@@ -30,6 +30,9 @@ module Zakuro
30
30
  # * 中盈(小余3671秒2)/ 2 = 小余1835秒5
31
31
  # * 日(小余8400) - 小余1835秒5 = 小余6564秒3
32
32
  DROPPED_DATE_LIMIT = Cycle::Remainder.new(day: 0, minute: 6564, second: 3)
33
+
34
+ # @return [Cycle::Remainder] 有滅判定
35
+ VANISHED_DATE_LIMIT = Cycle::Remainder.new(day: 0, minute: 3943, second: 0)
33
36
  end
34
37
 
35
38
  #
@@ -29,19 +29,6 @@ module Zakuro
29
29
  super(base_day: Const::Number::Cycle::DAY, base_minute: MINUTE,
30
30
  day: day, minute: minute, second: second, total: total)
31
31
  end
32
-
33
- #
34
- # 特定の文字フォーマットにして出力する
35
- #
36
- # @param [String] form フォーマット(大余、小余、秒それぞれを%dで指定する)
37
- #
38
- # @return [String] フォーマットした結果
39
- #
40
- def format(form: '%d-%d')
41
- return '' if invalid?
42
-
43
- super(form, @day, @minute, @second)
44
- end
45
32
  end
46
33
 
47
34
  #
@@ -63,19 +50,6 @@ module Zakuro
63
50
  super(base_day: Const::Number::Cycle::DAY, base_minute: MINUTE,
64
51
  day: day, minute: minute, second: second, total: total)
65
52
  end
66
-
67
- #
68
- # 特定の文字フォーマットにして出力する
69
- #
70
- # @param [String] form フォーマット(大余、小余、秒それぞれを%dで指定する)
71
- #
72
- # @return [String] フォーマットした結果
73
- #
74
- def format(form: '%d-%d')
75
- return '' if invalid?
76
-
77
- super(form, @day, @minute, @second)
78
- end
79
53
  end
80
54
 
81
55
  #
@@ -98,18 +72,27 @@ module Zakuro
98
72
  super(base_day: Const::Number::Derivation::REMAINDER_ALL_YEAR, base_minute: MINUTE,
99
73
  day: day, minute: minute, second: second, total: total)
100
74
  end
75
+ end
76
+
77
+ #
78
+ # VanishedRemainder 滅日の計算向け時刻情報(滅余)
79
+ #
80
+ class VanishedRemainder < Calculation::Cycle::AbstractRemainder
81
+ # @return [Integer] 分(1分=8秒)
82
+ MINUTE = 8
101
83
 
102
84
  #
103
- # 特定の文字フォーマットにして出力する
104
- #
105
- # @param [String] form フォーマット(大余、小余、秒それぞれを%dで指定する)
85
+ # 初期化
106
86
  #
107
- # @return [String] フォーマットした結果
87
+ # @param [Integer] day 大余("日"に相当)
88
+ # @param [Integer] minute 小余("分"に相当)
89
+ # @param [Integer] second 秒
90
+ # @param [Integer] total 繰り上げなしの小余
108
91
  #
109
- def format(form: '%d-%d')
110
- return '' if invalid?
111
-
112
- super(form, @day, @minute, @second)
92
+ def initialize(day: -1, minute: -1, second: -1, total: -1)
93
+ # 小余 = 朔虚分
94
+ super(base_day: Const::Number::Derivation::REMAINDER_IDEAL_MONTH, base_minute: MINUTE,
95
+ day: day, minute: minute, second: second, total: total)
113
96
  end
114
97
  end
115
98
  end