zakuro 0.1.0 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +30 -12
  3. data/doc/operation/csv/month.csv +202 -202
  4. data/doc/operation/operation.xlsx +0 -0
  5. data/doc/operation/transfer.rb +6 -2
  6. data/lib/zakuro/calculation/base/multi_gengou.rb +101 -0
  7. data/lib/zakuro/calculation/base/multi_gengou_roller.rb +218 -0
  8. data/lib/zakuro/calculation/base/year.rb +107 -0
  9. data/lib/zakuro/calculation/cycle/abstract_remainder.rb +471 -0
  10. data/lib/zakuro/calculation/cycle/abstract_solar_term.rb +173 -0
  11. data/lib/zakuro/calculation/cycle/zodiac.rb +106 -0
  12. data/lib/zakuro/calculation/monthly/first_day.rb +45 -0
  13. data/lib/zakuro/calculation/monthly/initialized_month.rb +125 -0
  14. data/lib/zakuro/calculation/monthly/month.rb +187 -0
  15. data/lib/zakuro/calculation/monthly/month_label.rb +88 -0
  16. data/lib/zakuro/calculation/monthly/operated_month.rb +209 -0
  17. data/lib/zakuro/calculation/range/full_range.rb +210 -0
  18. data/lib/zakuro/calculation/range/operated_range.rb +144 -0
  19. data/lib/zakuro/calculation/range/operated_solar_terms.rb +201 -0
  20. data/lib/zakuro/calculation/range/transfer/western_date_allocation.rb +82 -0
  21. data/lib/zakuro/calculation/range/transfer/year_boundary.rb +146 -0
  22. data/lib/zakuro/calculation/specifier/single_day.rb +109 -0
  23. data/lib/zakuro/calculation/summary/single.rb +129 -0
  24. data/lib/zakuro/condition.rb +16 -13
  25. data/lib/zakuro/era/japan/gengou/parser.rb +1 -3
  26. data/lib/zakuro/era/japan/gengou/type.rb +3 -3
  27. data/lib/zakuro/era/japan/gengou/validator.rb +15 -13
  28. data/lib/zakuro/merchant.rb +2 -2
  29. data/lib/zakuro/operation/month/parser.rb +132 -36
  30. data/lib/zakuro/operation/month/type.rb +11 -10
  31. data/lib/zakuro/operation/month/validator.rb +332 -28
  32. data/lib/zakuro/operation/operation.rb +21 -0
  33. data/lib/zakuro/operation/yaml/month.yaml +1 -1
  34. data/lib/zakuro/output/error.rb +7 -6
  35. data/lib/zakuro/output/logger.rb +50 -49
  36. data/lib/zakuro/output/response.rb +145 -144
  37. data/lib/zakuro/result/operation.rb +64 -36
  38. data/lib/zakuro/tools/stringifier.rb +2 -2
  39. data/lib/zakuro/tools/typeof.rb +2 -2
  40. data/lib/zakuro/version.rb +1 -1
  41. data/lib/zakuro/version/abstract_version.rb +1 -1
  42. data/lib/zakuro/version/context.rb +23 -0
  43. data/lib/zakuro/version/senmyou/const/number.rb +51 -0
  44. data/lib/zakuro/version/senmyou/const/remainder.rb +43 -0
  45. data/lib/zakuro/version/senmyou/cycle/remainder.rb +61 -0
  46. data/lib/zakuro/version/senmyou/cycle/solar_term.rb +31 -0
  47. data/lib/zakuro/version/senmyou/monthly/lunar_phase.rb +166 -181
  48. data/lib/zakuro/version/senmyou/range/annual_range.rb +86 -159
  49. data/lib/zakuro/version/senmyou/senmyou.rb +10 -4
  50. data/lib/zakuro/version/senmyou/stella/lunar/adjustment.rb +237 -0
  51. data/lib/zakuro/version/senmyou/stella/lunar/localization.rb +45 -0
  52. data/lib/zakuro/version/senmyou/stella/lunar/location.rb +108 -0
  53. data/lib/zakuro/version/senmyou/stella/lunar/value.rb +89 -0
  54. data/lib/zakuro/version/senmyou/stella/origin/average_november.rb +34 -0
  55. data/lib/zakuro/version/senmyou/stella/origin/lunar_age.rb +62 -0
  56. data/lib/zakuro/version/senmyou/stella/origin/winter_solstice.rb +55 -0
  57. data/lib/zakuro/version/senmyou/stella/solar/adjustment.rb +93 -0
  58. data/lib/zakuro/version/senmyou/stella/solar/average.rb +175 -0
  59. data/lib/zakuro/version/senmyou/stella/solar/interval.rb +103 -0
  60. data/lib/zakuro/version/senmyou/stella/solar/location.rb +164 -0
  61. data/lib/zakuro/version/senmyou/stella/solar/value.rb +138 -0
  62. data/lib/zakuro/version/version_class_resolver.rb +62 -0
  63. data/lib/zakuro/version_factory.rb +2 -2
  64. metadata +38 -24
  65. data/lib/zakuro/cycle/abstract_remainder.rb +0 -456
  66. data/lib/zakuro/cycle/zodiac.rb +0 -103
  67. data/lib/zakuro/version/senmyou/base/era.rb +0 -83
  68. data/lib/zakuro/version/senmyou/base/multi_gengou.rb +0 -98
  69. data/lib/zakuro/version/senmyou/base/multi_gengou_roller.rb +0 -217
  70. data/lib/zakuro/version/senmyou/base/remainder.rb +0 -60
  71. data/lib/zakuro/version/senmyou/base/solar_term.rb +0 -76
  72. data/lib/zakuro/version/senmyou/base/year.rb +0 -104
  73. data/lib/zakuro/version/senmyou/monthly/first_day.rb +0 -44
  74. data/lib/zakuro/version/senmyou/monthly/initialized_month.rb +0 -48
  75. data/lib/zakuro/version/senmyou/monthly/month.rb +0 -181
  76. data/lib/zakuro/version/senmyou/monthly/month_label.rb +0 -87
  77. data/lib/zakuro/version/senmyou/monthly/operated_month.rb +0 -167
  78. data/lib/zakuro/version/senmyou/range/full_range.rb +0 -324
  79. data/lib/zakuro/version/senmyou/range/operated_range.rb +0 -105
  80. data/lib/zakuro/version/senmyou/range/operated_solar_terms.rb +0 -163
  81. data/lib/zakuro/version/senmyou/specifier/single_day_specifier.rb +0 -99
  82. data/lib/zakuro/version/senmyou/stella/lunar_orbit.rb +0 -332
  83. data/lib/zakuro/version/senmyou/stella/solar_average.rb +0 -214
  84. data/lib/zakuro/version/senmyou/stella/solar_orbit.rb +0 -394
  85. data/lib/zakuro/version/senmyou/stella/winter_solstice.rb +0 -106
  86. data/lib/zakuro/version/senmyou/summary/single.rb +0 -71
@@ -1,106 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../../output/logger'
4
-
5
- # :nodoc:
6
- module Zakuro
7
- # :nodoc:
8
- module Senmyou
9
- # :reek:TooManyConstants
10
-
11
- #
12
- # WinterSolstice 冬至
13
- #
14
- module WinterSolstice
15
- # @return [Integer] 統法(1日=8400分)
16
- DAY = 8400
17
- # @return [Integer] 朔望月
18
- SYNODIC_MONTH = 248_057
19
- # @return [Integer] 一年
20
- YEAR = 3_068_055
21
- # @return [Integer] 通余: (YEAR - DAY * 12 * 30) = 44055
22
- REMAINDER_ALL_YEAR = 44_055
23
- # @return [Integer] 旬周(60日) 8400 * 60
24
- SIXTY_DAYS = 504_000
25
- # @return [Integer] 積年(甲子夜半朔旦冬至〜暦の開始前)
26
- TOTAL_YEAR = 7_070_138
27
- # @return [Integer] 暦の開始年(長慶2年)
28
- BEGIN_YEAR = 822
29
-
30
- # @return [Logger] ロガー
31
- LOGGER = Logger.new(location: 'winter_solstice')
32
-
33
- # :reek:TooManyStatements { max_statements: 6 }
34
-
35
- #
36
- # 対象年の前年の冬至を求める
37
- #
38
- # @param [Integer] western_year 西暦年
39
- #
40
- # @return [Remainder] 前年の冬至
41
- #
42
- def self.calc(western_year:)
43
- # 積年の開始から対象年までの年数
44
- total = TOTAL_YEAR + western_year - BEGIN_YEAR
45
- remainder_year = total % SIXTY_DAYS
46
-
47
- LOGGER.debug("[a01]:#{remainder_year}")
48
-
49
- # 通余を使う
50
- winter_solstice_minute = (remainder_year * REMAINDER_ALL_YEAR) % SIXTY_DAYS
51
-
52
- LOGGER.debug("[a02]:#{winter_solstice_minute}")
53
-
54
- Remainder.new(total: winter_solstice_minute)
55
- end
56
-
57
- # :reek:TooManyStatements { max_statements: 7 }
58
-
59
- #
60
- # 対象年の天正閏余(冬至より前にある11月経朔との差 = 月齢)を算出する
61
- # 太陽と月の運動による補正値を算出し、その補正結果を返す
62
- #
63
- # @param [Integer] western_year 西暦年
64
- #
65
- # @return [Remainder] 天正閏余
66
- #
67
- def self.calc_moon_age(western_year:)
68
- # 積年の開始から対象年までの年数
69
- total = TOTAL_YEAR + western_year - BEGIN_YEAR
70
-
71
- # 12朔望月に対する1年の余り(単位:分)
72
- remainder_minute = YEAR - (SYNODIC_MONTH * 12)
73
-
74
- # 朔望月に含まれなかった余り(単位:年)
75
- remainder_year = total % SYNODIC_MONTH
76
-
77
- LOGGER.debug("[b01]: #{remainder_year}")
78
-
79
- # 天正閏余
80
- winter_solstice_age = remainder_minute * remainder_year % SYNODIC_MONTH
81
-
82
- LOGGER.debug("[b02]: #{winter_solstice_age}")
83
-
84
- # 大余・小余に変換する
85
- Remainder.new(total: winter_solstice_age)
86
- end
87
-
88
- #
89
- # 11月経朔(冬至が含まれる月の1日)を求める
90
- #
91
- # @param [Integer] western_year 西暦年
92
- #
93
- # @return [Remainder] 11月経朔
94
- #
95
- def self.calc_averaged_last_november_1st(western_year:)
96
- # 冬至
97
- winter_solstice = calc(western_year: western_year)
98
- # 天正閏余
99
- winter_solstice_age = calc_moon_age(western_year: western_year)
100
-
101
- # 11月経朔
102
- winter_solstice.sub(winter_solstice_age)
103
- end
104
- end
105
- end
106
- end
@@ -1,71 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require File.expand_path('../../../../../' \
4
- 'lib/zakuro/version/senmyou/specifier/single_day_specifier',
5
- __dir__)
6
-
7
- require File.expand_path('../../../../../' \
8
- 'lib/zakuro/version/senmyou/range/full_range',
9
- __dir__)
10
-
11
- require File.expand_path('../../../../../' \
12
- 'lib/zakuro/version/senmyou/range/operated_range',
13
- __dir__)
14
-
15
- # :nodoc:
16
- module Zakuro
17
- # :nodoc:
18
- module Senmyou
19
- #
20
- # Single 一日
21
- #
22
- module Single
23
- #
24
- # 生成する
25
- #
26
- # @param [Western::Calendar] date 西暦日
27
- #
28
- # @return [Result::Single] 一日検索結果(和暦日)
29
- #
30
- def self.get(date: Western::Calendar.new)
31
- full_range = FullRange.new(start_date: date)
32
- years = full_range.get
33
-
34
- calc_date = SingleDaySpecifier.get(years: years, date: date)
35
-
36
- operated_range = OperatedRange.new(years: years)
37
-
38
- actual_date = SingleDaySpecifier.get(years: operated_range.get, date: date)
39
-
40
- first_day = calc_date.month.first_day.western_date
41
- operation_history = Operation.specify_history(western_date: first_day)
42
-
43
- operation_month = Single.create_operation_month(operation_history: operation_history)
44
-
45
- Result::Single.new(data: actual_date, operation: Result::Operation::Bundle.new(
46
- operated: !operation_history.invalid?, month: operation_month, original: calc_date
47
- ))
48
- end
49
-
50
- def self.create_operation_month(operation_history: Operation::MonthHistory.new)
51
- # TODO: MonthHistory が持つ親IDとの紐付け
52
- return Result::Operation::Month.new if operation_history.invalid?
53
-
54
- annotations = []
55
- operation_history.annotations.each do |annotation|
56
- annotations.push(
57
- Result::Operation::Annotation.new(
58
- description: annotation.description,
59
- note: annotation.note
60
- )
61
- )
62
- end
63
-
64
- reference = operation_history.reference
65
- Result::Operation::Month.new(
66
- page: reference.page, number: reference.number, annotations: annotations
67
- )
68
- end
69
- end
70
- end
71
- end