zakuro 0.9.0 → 0.9.1

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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +30 -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/usage.md +120 -0
  8. data/doc/vanished_date.md +86 -0
  9. data/doc/version/daien.md +163 -0
  10. data/doc/version/genka.md +116 -0
  11. data/doc/version/gihou.md +172 -0
  12. data/doc/version/section/common_post_process.md +60 -0
  13. data/doc/version/section/common_pre_process.md +185 -0
  14. data/doc/version/section/const.md +45 -0
  15. data/doc/version/section/decimal.md +101 -0
  16. data/doc/version/section/lunisolar_calendar.md +55 -0
  17. data/doc/version/section/senmyou_november_1st.md +41 -0
  18. data/{lib/zakuro/version/senmyou/README.md → doc/version/senmyou.md} +15 -168
  19. data/lib/zakuro/calculation/cycle/abstract_remainder.rb +58 -0
  20. data/lib/zakuro/calculation/monthly/first_day.rb +9 -1
  21. data/lib/zakuro/calculation/option/vanished_date/abstract_parameter.rb +40 -0
  22. data/lib/zakuro/calculation/option/vanished_date/location.rb +84 -0
  23. data/lib/zakuro/calculation/range/medieval_annual_range.rb +5 -3
  24. data/lib/zakuro/calculation/range/transfer/gengou_scroller.rb +1 -0
  25. data/lib/zakuro/calculation/stella/lunar/abstract_location.rb +6 -2
  26. data/lib/zakuro/calculation/stella/lunar/choukei_value.rb +14 -0
  27. data/lib/zakuro/calculation/summary/internal/option.rb +59 -4
  28. data/lib/zakuro/context/option.rb +17 -0
  29. data/lib/zakuro/context/version_class_resolver.rb +17 -1
  30. data/lib/zakuro/result/data/option/vanished_date/calculation.rb +45 -0
  31. data/lib/zakuro/result/data/option/vanished_date/option.rb +47 -0
  32. data/lib/zakuro/result/data/single_day.rb +2 -0
  33. data/lib/zakuro/version/daien/const/number.rb +2 -0
  34. data/lib/zakuro/version/daien/const/remainder.rb +7 -2
  35. data/lib/zakuro/version/daien/cycle/remainder.rb +38 -20
  36. data/lib/zakuro/version/daien/monthly/lunar_phase.rb +2 -4
  37. data/lib/zakuro/version/daien/option/dropped_date/parameter.rb +5 -3
  38. data/lib/zakuro/version/daien/option/vanished_date/parameter.rb +33 -0
  39. data/lib/zakuro/version/daien/stella/lunar/location.rb +5 -8
  40. data/lib/zakuro/version/genka/cycle/remainder.rb +6 -2
  41. data/lib/zakuro/version/genka/monthly/lunar_phase.rb +14 -3
  42. data/lib/zakuro/version/genka/option/vanished_date/parameter.rb +31 -0
  43. data/lib/zakuro/version/gihou/const/remainder.rb +1 -5
  44. data/lib/zakuro/version/gihou/cycle/remainder.rb +0 -26
  45. data/lib/zakuro/version/gihou/monthly/lunar_phase.rb +2 -4
  46. data/lib/zakuro/version/gihou/option/vanished_date/parameter.rb +31 -0
  47. data/lib/zakuro/version/gihou/stella/lunar/location.rb +5 -8
  48. data/lib/zakuro/version/senmyou/const/number.rb +3 -1
  49. data/lib/zakuro/version/senmyou/const/remainder.rb +4 -2
  50. data/lib/zakuro/version/senmyou/cycle/remainder.rb +17 -34
  51. data/lib/zakuro/version/senmyou/monthly/lunar_phase.rb +5 -5
  52. data/lib/zakuro/version/senmyou/option/vanished_date/parameter.rb +33 -0
  53. data/lib/zakuro/version/senmyou/stella/lunar/location.rb +6 -8
  54. data/lib/zakuro/version/senmyou/stella/lunar/value.rb +9 -0
  55. metadata +24 -3
@@ -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
  #
@@ -44,8 +47,7 @@ module Zakuro
44
47
  # @note 章月 248057 = 29-4457
45
48
  #
46
49
  # @return [Cycle::LunarRemainder] 弦(1分=100秒)
47
- # TODO: 秒が25では通らない。少なくとも0.00546は必要になる(最大 0.01863)
48
- QUARTER = Cycle::LunarRemainder.new(day: 7, minute: 3214, second: 25.00546)
50
+ QUARTER = Cycle::LunarRemainder.new(day: 7, minute: 3214, second: 25)
49
51
  end
50
52
  end
51
53
  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
 
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
@@ -55,7 +55,7 @@ module Zakuro
55
55
  # @return [Remainder] 定朔
56
56
  #
57
57
  def current_remainder
58
- debug("average_remainder.format: #{average_remainder.format}")
58
+ # debug("average_remainder.format: #{average_remainder.format}")
59
59
 
60
60
  sum = correction_value
61
61
  adjusted = average_remainder.add(
@@ -63,7 +63,7 @@ module Zakuro
63
63
  )
64
64
  adjusted.up_on_new_moon!
65
65
 
66
- debug("result: #{adjusted.format}")
66
+ debug("result: #{adjusted.format(form: '%d-%d.%.5f')}")
67
67
 
68
68
  adjusted
69
69
  end
@@ -75,8 +75,8 @@ module Zakuro
75
75
  #
76
76
  def correction_solar_value
77
77
  solar_location.run
78
- debug("solar_term.remainder: #{solar_location.remainder.format(form: '%d-%d.%d')}")
79
- debug("solar_term.index: #{solar_location.index}")
78
+ # debug("solar_term.remainder: #{solar_location.remainder.format(form: '%d-%d.%.5f')}")
79
+ # debug("solar_term.index: #{solar_location.index}")
80
80
 
81
81
  Solar::Value.get(solar_location: solar_location)
82
82
  end
@@ -94,7 +94,7 @@ module Zakuro
94
94
  remainder = lunar_location.adjusted_remainder
95
95
  forward = lunar_location.forward
96
96
 
97
- debug("[lunar]remainder.format: #{remainder.format}")
97
+ debug("[lunar]remainder.format: #{remainder.format(form: '%d-%d.%.5f')}")
98
98
  debug("[lunar]forward: #{forward}")
99
99
 
100
100
  Lunar::Value.get(remainder: remainder, forward: forward)
@@ -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 Senmyou
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
@@ -32,7 +32,12 @@ module Zakuro
32
32
  # @param [Integer] western_year 西暦年
33
33
  #
34
34
  def initialize(lunar_age:, western_year:)
35
- super(lunar_age: lunar_age, western_year: western_year)
35
+ super(
36
+ lunar_age: lunar_age,
37
+ quarter: QUARTER,
38
+ western_year: western_year
39
+ )
40
+
36
41
  # 進
37
42
  @forward = true
38
43
  end
@@ -49,13 +54,6 @@ module Zakuro
49
54
  first
50
55
  end
51
56
 
52
- #
53
- # 弦の分だけ月地点を進める
54
- #
55
- def add_quarter
56
- remainder.add!(QUARTER)
57
- end
58
-
59
57
  private
60
58
 
61
59
  #
@@ -16,6 +16,9 @@ module Zakuro
16
16
  # Value 月補正値
17
17
  #
18
18
  module Value
19
+ # @return [Output::Logger] ロガー
20
+ LOGGER = Output::Logger.new(location: 'lunar_value')
21
+
19
22
  # :reek:TooManyStatements { max_statements: 9 }
20
23
 
21
24
  class << self
@@ -39,12 +42,18 @@ module Zakuro
39
42
 
40
43
  value = row.value
41
44
 
45
+ # LOGGER.debug("value.per: #{value.per}")
46
+ # LOGGER.debug("row.denominator: #{row.denominator}")
47
+ # LOGGER.debug("value.stack: #{value.stack}")
48
+
42
49
  minus_minute = Adjustment.minus_minute(day: day, minute: minute)
43
50
 
44
51
  day = Calculation::Lunar::ChoukeiValue.rounded_day(
45
52
  per: value.per, denominator: row.denominator, minute: minus_minute
46
53
  )
47
54
 
55
+ # LOGGER.debug("day: #{day}")
56
+
48
57
  value.stack + day
49
58
  end
50
59
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zakuro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - pldb
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-10 00:00:00.000000000 Z
11
+ date: 2022-11-25 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: mainly lunar solar calendar
14
14
  email:
@@ -29,13 +29,27 @@ files:
29
29
  - VERSION
30
30
  - bin/console
31
31
  - bin/setup
32
+ - doc/condition.md
32
33
  - doc/dropped_date.md
33
34
  - doc/error.md
35
+ - doc/expection.md
34
36
  - doc/gengou.md
35
37
  - doc/operation.md
36
38
  - doc/operation/csv/month.csv
37
39
  - doc/operation/operation.xlsx
38
40
  - doc/operation/transfer.rb
41
+ - doc/usage.md
42
+ - doc/vanished_date.md
43
+ - doc/version/daien.md
44
+ - doc/version/genka.md
45
+ - doc/version/gihou.md
46
+ - doc/version/section/common_post_process.md
47
+ - doc/version/section/common_pre_process.md
48
+ - doc/version/section/const.md
49
+ - doc/version/section/decimal.md
50
+ - doc/version/section/lunisolar_calendar.md
51
+ - doc/version/section/senmyou_november_1st.md
52
+ - doc/version/senmyou.md
39
53
  - images/12月以降の入定気.png
40
54
  - images/12月以降の月の進退.png
41
55
  - images/source/description.numbers
@@ -78,6 +92,8 @@ files:
78
92
  - lib/zakuro/calculation/monthly/operated_solar_term.rb
79
93
  - lib/zakuro/calculation/option/dropped_date/abstract_parameter.rb
80
94
  - lib/zakuro/calculation/option/dropped_date/location.rb
95
+ - lib/zakuro/calculation/option/vanished_date/abstract_parameter.rb
96
+ - lib/zakuro/calculation/option/vanished_date/location.rb
81
97
  - lib/zakuro/calculation/range/abstract_full_range.rb
82
98
  - lib/zakuro/calculation/range/abstract_operation_range.rb
83
99
  - lib/zakuro/calculation/range/dated_full_range.rb
@@ -154,6 +170,8 @@ files:
154
170
  - lib/zakuro/result/data/option/dropped_date/calculation.rb
155
171
  - lib/zakuro/result/data/option/dropped_date/option.rb
156
172
  - lib/zakuro/result/data/option/dropped_date/solar_term.rb
173
+ - lib/zakuro/result/data/option/vanished_date/calculation.rb
174
+ - lib/zakuro/result/data/option/vanished_date/option.rb
157
175
  - lib/zakuro/result/data/single_day.rb
158
176
  - lib/zakuro/result/data/solar_term.rb
159
177
  - lib/zakuro/result/data/year.rb
@@ -172,6 +190,7 @@ files:
172
190
  - lib/zakuro/version/daien/daien.rb
173
191
  - lib/zakuro/version/daien/monthly/lunar_phase.rb
174
192
  - lib/zakuro/version/daien/option/dropped_date/parameter.rb
193
+ - lib/zakuro/version/daien/option/vanished_date/parameter.rb
175
194
  - lib/zakuro/version/daien/range/annual_range.rb
176
195
  - lib/zakuro/version/daien/stella/lunar/adjustment.rb
177
196
  - lib/zakuro/version/daien/stella/lunar/localization.rb
@@ -192,6 +211,7 @@ files:
192
211
  - lib/zakuro/version/genka/genka.rb
193
212
  - lib/zakuro/version/genka/monthly/lunar_phase.rb
194
213
  - lib/zakuro/version/genka/option/dropped_date/parameter.rb
214
+ - lib/zakuro/version/genka/option/vanished_date/parameter.rb
195
215
  - lib/zakuro/version/genka/range/annual_range.rb
196
216
  - lib/zakuro/version/genka/stella/origin/first_term.rb
197
217
  - lib/zakuro/version/genka/stella/origin/january.rb
@@ -203,6 +223,7 @@ files:
203
223
  - lib/zakuro/version/gihou/gihou.rb
204
224
  - lib/zakuro/version/gihou/monthly/lunar_phase.rb
205
225
  - lib/zakuro/version/gihou/option/dropped_date/parameter.rb
226
+ - lib/zakuro/version/gihou/option/vanished_date/parameter.rb
206
227
  - lib/zakuro/version/gihou/range/annual_range.rb
207
228
  - lib/zakuro/version/gihou/stella/lunar/adjustment.rb
208
229
  - lib/zakuro/version/gihou/stella/lunar/localization.rb
@@ -220,13 +241,13 @@ files:
220
241
  - lib/zakuro/version/houryaku/houryaku.rb
221
242
  - lib/zakuro/version/joukyou/joukyou.rb
222
243
  - lib/zakuro/version/kansei/kansei.rb
223
- - lib/zakuro/version/senmyou/README.md
224
244
  - lib/zakuro/version/senmyou/const/number.rb
225
245
  - lib/zakuro/version/senmyou/const/remainder.rb
226
246
  - lib/zakuro/version/senmyou/cycle/remainder.rb
227
247
  - lib/zakuro/version/senmyou/cycle/solar_term.rb
228
248
  - lib/zakuro/version/senmyou/monthly/lunar_phase.rb
229
249
  - lib/zakuro/version/senmyou/option/dropped_date/parameter.rb
250
+ - lib/zakuro/version/senmyou/option/vanished_date/parameter.rb
230
251
  - lib/zakuro/version/senmyou/range/annual_range.rb
231
252
  - lib/zakuro/version/senmyou/senmyou.rb
232
253
  - lib/zakuro/version/senmyou/stella/lunar/adjustment.rb