zakuro 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -0
- data/lib/zakuro/calculation/base/gengou.rb +82 -0
- data/lib/zakuro/calculation/base/linear_gengou.rb +76 -0
- data/lib/zakuro/calculation/base/operated_year.rb +5 -15
- data/lib/zakuro/calculation/base/year.rb +26 -14
- data/lib/zakuro/calculation/gengou/internal/counter.rb +129 -0
- data/lib/zakuro/calculation/gengou/internal/reserve/interval.rb +183 -0
- data/lib/zakuro/calculation/gengou/internal/reserve/list.rb +382 -0
- data/lib/zakuro/calculation/gengou/internal/reserve.rb +42 -0
- data/lib/zakuro/calculation/gengou/scroll.rb +262 -0
- data/lib/zakuro/calculation/monthly/first_day.rb +3 -2
- data/lib/zakuro/calculation/monthly/month.rb +49 -2
- data/lib/zakuro/calculation/monthly/operated_month.rb +2 -2
- data/lib/zakuro/calculation/range/full_range.rb +65 -103
- data/lib/zakuro/calculation/range/operated_range.rb +13 -8
- data/lib/zakuro/calculation/range/operated_solar_terms.rb +36 -17
- data/lib/zakuro/calculation/range/transfer/gengou_scroller.rb +54 -0
- data/lib/zakuro/calculation/range/transfer/year_boundary.rb +25 -21
- data/lib/zakuro/calculation/specifier/single_day.rb +13 -35
- data/lib/zakuro/calculation/summary/single.rb +5 -2
- data/lib/zakuro/calculation/version/internal/crawler.rb +51 -0
- data/lib/zakuro/calculation/version/internal/range.rb +39 -0
- data/lib/zakuro/calculation/version/version.rb +24 -0
- data/lib/zakuro/era/japan/calendar.rb +133 -0
- data/lib/zakuro/era/japan/gengou/parser.rb +95 -25
- data/lib/zakuro/era/japan/gengou/type.rb +148 -41
- data/lib/zakuro/era/japan/gengou/validator.rb +157 -52
- data/lib/zakuro/era/japan/gengou/yaml/set-001-until-south.yaml +1870 -0
- data/lib/zakuro/era/japan/gengou/yaml/set-002-from-north.yaml +810 -0
- data/lib/zakuro/era/japan/gengou/yaml/set-003-modern.yaml +50 -0
- data/lib/zakuro/era/japan/gengou.rb +5 -5
- data/lib/zakuro/era/japan/version.rb +151 -0
- data/lib/zakuro/era/{western.rb → western/calendar.rb} +0 -0
- data/lib/zakuro/merchant.rb +12 -3
- data/lib/zakuro/operation/month/parser.rb +1 -1
- data/lib/zakuro/operation/month/type.rb +1 -1
- data/lib/zakuro/operation/month/validator.rb +1 -1
- data/lib/zakuro/output/response.rb +5 -5
- data/lib/zakuro/tools/typeconv.rb +38 -0
- data/lib/zakuro/tools/typeof.rb +4 -1
- data/lib/zakuro/version/context.rb +24 -3
- data/lib/zakuro/version/daien/daien.rb +1 -26
- data/lib/zakuro/version/genka/genka.rb +1 -26
- data/lib/zakuro/version/gihou/gihou.rb +1 -30
- data/lib/zakuro/version/gregorio/gregorio.rb +1 -9
- data/lib/zakuro/version/houryaku/houryaku.rb +1 -9
- data/lib/zakuro/version/joukyou/joukyou.rb +1 -9
- data/lib/zakuro/version/kansei/kansei.rb +1 -9
- data/lib/zakuro/version/senmyou/senmyou.rb +1 -30
- data/lib/zakuro/version/tenpou/tenpou.rb +1 -9
- data/zakuro.gemspec +1 -3
- metadata +25 -17
- data/lib/zakuro/calculation/base/multi_gengou.rb +0 -101
- data/lib/zakuro/calculation/base/multi_gengou_roller.rb +0 -218
- data/lib/zakuro/calculation/range/transfer/western_date_allocation.rb +0 -82
- data/lib/zakuro/era/japan/reki.rb +0 -91
- data/lib/zakuro/era/japan/yaml/set-001-until-south.yaml +0 -1121
- data/lib/zakuro/era/japan/yaml/set-002-from-north.yaml +0 -485
- data/lib/zakuro/era/japan/yaml/set-003-modern.yaml +0 -28
- data/lib/zakuro/version/abstract_version.rb +0 -29
- data/lib/zakuro/version.rb +0 -7
- data/lib/zakuro/version_factory.rb +0 -59
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 567799c25255c97ec707d421b465358c1209afeef0d8c2f1c84a9b3bd5e65148
|
4
|
+
data.tar.gz: bff172488e9ea94a8da83d09fa1dc9bd62a28de871ad0cc41217d20ff5dc2b94
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: daf11f9f9319d23fbba463571cb8f76184aeb7b6133fcde661bd06773113f37bc9684e8680a848c4998a96ea287f371ca123f878a7bb5dbdfb2ed499c434f8a7
|
7
|
+
data.tar.gz: 3624066b34b4271961793f58bbad9509b046a3df967df4513de195352237386ccd5848b9b5f72c8838f6efb944fac1129b494001c570aa2cb5a93440d089e173
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.6.0
|
@@ -0,0 +1,82 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../era/western/calendar'
|
4
|
+
|
5
|
+
# :nodoc:
|
6
|
+
module Zakuro
|
7
|
+
# :nodoc:
|
8
|
+
module Calculation
|
9
|
+
# :nodoc:
|
10
|
+
module Base
|
11
|
+
#
|
12
|
+
# Gengou 元号
|
13
|
+
#
|
14
|
+
class Gengou
|
15
|
+
# @return [Western::Calendar] 開始日
|
16
|
+
attr_reader :start_date
|
17
|
+
# @return [Western::Calendar] 終了日
|
18
|
+
attr_reader :end_date
|
19
|
+
# @return [Array<LinearGengou>] 1行目元号
|
20
|
+
attr_reader :first_line
|
21
|
+
# @return [Array<LinearGengou>] 2行目元号
|
22
|
+
attr_reader :second_line
|
23
|
+
|
24
|
+
#
|
25
|
+
# 初期化
|
26
|
+
#
|
27
|
+
# @param [Western::Calendar] start_date 開始日
|
28
|
+
# @param [Western::Calendar] end_date 終了日
|
29
|
+
# @param [Array<LinearGengou>] first_line 1行目元号
|
30
|
+
# @param [Array<LinearGengou>] second_line 2行目元号
|
31
|
+
#
|
32
|
+
def initialize(start_date: Western::Calendar.new, end_date: Western::Calendar.new,
|
33
|
+
first_line: [], second_line: [])
|
34
|
+
@start_date = start_date
|
35
|
+
@end_date = end_date
|
36
|
+
@first_line = first_line
|
37
|
+
@second_line = second_line
|
38
|
+
end
|
39
|
+
|
40
|
+
#
|
41
|
+
# 1行目元号を取得する
|
42
|
+
#
|
43
|
+
# @param [Western::Calendar] date 西暦日
|
44
|
+
#
|
45
|
+
# @return [LinearGengou] 1行目元号
|
46
|
+
#
|
47
|
+
def match_first_line(date: Western::Calendar)
|
48
|
+
@first_line.each do |line|
|
49
|
+
return line.clone if line.include?(date: date)
|
50
|
+
end
|
51
|
+
|
52
|
+
LinearGengou.new
|
53
|
+
end
|
54
|
+
|
55
|
+
#
|
56
|
+
# 2行目元号を取得する
|
57
|
+
#
|
58
|
+
# @param [Western::Calendar] date 西暦日
|
59
|
+
#
|
60
|
+
# @return [LinearGengou] 2行目元号
|
61
|
+
#
|
62
|
+
def match_second_line(date: Western::Calendar)
|
63
|
+
@second_line.each do |line|
|
64
|
+
return line.clone if line.include?(date: date)
|
65
|
+
end
|
66
|
+
|
67
|
+
LinearGengou.new
|
68
|
+
end
|
69
|
+
|
70
|
+
#
|
71
|
+
# 不正か
|
72
|
+
#
|
73
|
+
# @return [True] 不正
|
74
|
+
# @return [False] 不正なし
|
75
|
+
#
|
76
|
+
def invalid?
|
77
|
+
@first_line.size.zero? && @second_line.size.zero?
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../era/western/calendar'
|
4
|
+
|
5
|
+
# :nodoc:
|
6
|
+
module Zakuro
|
7
|
+
# :nodoc:
|
8
|
+
module Calculation
|
9
|
+
# :nodoc:
|
10
|
+
module Base
|
11
|
+
#
|
12
|
+
# LinearGengou 直列元号
|
13
|
+
#
|
14
|
+
class LinearGengou
|
15
|
+
INVALID_YEAR = -1
|
16
|
+
|
17
|
+
# @return [Western::Calendar] 開始日
|
18
|
+
attr_reader :start_date
|
19
|
+
# @return [Western::Calendar] 終了日
|
20
|
+
attr_reader :end_date
|
21
|
+
# @return [String] 元号名
|
22
|
+
attr_reader :name
|
23
|
+
# @return [Integer] 年
|
24
|
+
attr_reader :year
|
25
|
+
|
26
|
+
#
|
27
|
+
# 初期化
|
28
|
+
#
|
29
|
+
# @param [Western::Calendar] start_date 開始日
|
30
|
+
# @param [Western::Calendar] end_date 終了日
|
31
|
+
# @param [String] name 元号名
|
32
|
+
# @param [Integer] 元号年
|
33
|
+
#
|
34
|
+
def initialize(start_date: Western::Calendar.new, end_date: Western::Calendar.new,
|
35
|
+
name: '', year: INVALID_YEAR)
|
36
|
+
@start_date = start_date
|
37
|
+
@end_date = end_date
|
38
|
+
@name = name
|
39
|
+
@year = year
|
40
|
+
end
|
41
|
+
|
42
|
+
#
|
43
|
+
# 不正か
|
44
|
+
#
|
45
|
+
# @return [True] 不正
|
46
|
+
# @return [False] 不正なし
|
47
|
+
#
|
48
|
+
def invalid?
|
49
|
+
@name == '' || @year == INVALID_YEAR
|
50
|
+
end
|
51
|
+
|
52
|
+
#
|
53
|
+
# 範囲内か
|
54
|
+
#
|
55
|
+
# @param [Western::Calendar] date 西暦日
|
56
|
+
#
|
57
|
+
# @return [True] 範囲内
|
58
|
+
# @return [False] 範囲外
|
59
|
+
#
|
60
|
+
def include?(date: Western::Calendar.new)
|
61
|
+
return false if invalid?
|
62
|
+
|
63
|
+
return false if @start_date.invalid?
|
64
|
+
|
65
|
+
return false if @end_date.invalid?
|
66
|
+
|
67
|
+
return false if date < @start_date
|
68
|
+
|
69
|
+
return false if date > @end_date
|
70
|
+
|
71
|
+
true
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -1,7 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative './year'
|
4
|
-
|
4
|
+
|
5
|
+
require_relative '../../version/context'
|
5
6
|
|
6
7
|
# :nodoc:
|
7
8
|
module Zakuro
|
@@ -16,23 +17,12 @@ module Zakuro
|
|
16
17
|
#
|
17
18
|
# 初期化
|
18
19
|
#
|
19
|
-
# @param [
|
20
|
+
# @param [Context] context 暦コンテキスト
|
20
21
|
# @param [Array<OperatedMonth>] months 年内の全ての月
|
21
22
|
# @param [Integer] total_days 年の日数
|
22
|
-
# @param [Western::Calendar] new_year_date 元旦
|
23
23
|
#
|
24
|
-
def initialize(
|
25
|
-
|
26
|
-
super(multi_gengou: multi_gengou, new_year_date: new_year_date,
|
27
|
-
months: months, total_days: total_days)
|
28
|
-
end
|
29
|
-
|
30
|
-
def commit
|
31
|
-
super
|
32
|
-
|
33
|
-
return if months.empty?
|
34
|
-
|
35
|
-
@new_year_date = months[0].first_day.western_date
|
24
|
+
def initialize(context: Context.new, months: [], total_days: 0)
|
25
|
+
super(context: context, months: months, total_days: total_days)
|
36
26
|
end
|
37
27
|
|
38
28
|
#
|
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
require_relative '../cycle/zodiac'
|
4
4
|
|
5
|
+
require_relative '../../era/western/calendar'
|
6
|
+
|
7
|
+
require_relative '../../version/context'
|
8
|
+
|
5
9
|
# :nodoc:
|
6
10
|
module Zakuro
|
7
11
|
# :nodoc:
|
@@ -12,28 +16,23 @@ module Zakuro
|
|
12
16
|
# Year 年
|
13
17
|
#
|
14
18
|
class Year
|
15
|
-
# @return [
|
16
|
-
attr_reader :
|
19
|
+
# @return [Context] 暦コンテキスト
|
20
|
+
attr_reader :context
|
17
21
|
# @return [Array<Month>] 年内の全ての月
|
18
22
|
attr_reader :months
|
19
23
|
# @return [Integer] 年の日数
|
20
24
|
attr_reader :total_days
|
21
|
-
# @return [Western::Calendar] 元旦
|
22
|
-
attr_reader :new_year_date
|
23
25
|
|
24
26
|
#
|
25
27
|
# 初期化
|
26
28
|
#
|
27
|
-
# @param [
|
29
|
+
# @param [Context] context 暦コンテキスト
|
28
30
|
# @param [Array<Month>] months 年内の全ての月
|
29
31
|
# @param [Integer] total_days 年の日数
|
30
|
-
# @param [Western::Calendar] new_year_date 元旦
|
31
32
|
#
|
32
|
-
def initialize(
|
33
|
-
|
34
|
-
@multi_gengou = multi_gengou
|
33
|
+
def initialize(context: Context.new, months: [], total_days: 0)
|
34
|
+
@context = context
|
35
35
|
@months = months
|
36
|
-
@new_year_date = new_year_date
|
37
36
|
@total_days = total_days
|
38
37
|
end
|
39
38
|
|
@@ -58,21 +57,34 @@ module Zakuro
|
|
58
57
|
# @return [MultiGengou] 自身
|
59
58
|
#
|
60
59
|
def next_year
|
61
|
-
@multi_gengou.next_year
|
62
|
-
|
63
|
-
@new_year_date += @total_days
|
64
60
|
@total_days = 0
|
65
61
|
|
66
62
|
self
|
67
63
|
end
|
68
64
|
|
65
|
+
#
|
66
|
+
# 年初を取得する
|
67
|
+
#
|
68
|
+
# @return [Western::Calendar] 年初
|
69
|
+
#
|
70
|
+
def new_year_date
|
71
|
+
return Western::Calendar.new unless months
|
72
|
+
|
73
|
+
return Western::Calendar.new if months.size.zero?
|
74
|
+
|
75
|
+
@months[0].western_date
|
76
|
+
end
|
77
|
+
|
69
78
|
#
|
70
79
|
# 十干十二支を取得する
|
71
80
|
#
|
72
81
|
# @return [String] 十干十二支
|
73
82
|
#
|
74
83
|
def zodiac_name
|
75
|
-
|
84
|
+
date = new_year_date
|
85
|
+
return '' if date.invalid?
|
86
|
+
|
87
|
+
Cycle::Zodiac.year_name(western_year: date.year)
|
76
88
|
end
|
77
89
|
|
78
90
|
#
|
@@ -0,0 +1,129 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../../era/japan/gengou'
|
4
|
+
require_relative '../../../era/japan/calendar'
|
5
|
+
require_relative '../../../era/western/calendar'
|
6
|
+
|
7
|
+
# :nodoc:
|
8
|
+
module Zakuro
|
9
|
+
# :nodoc:
|
10
|
+
module Calculation
|
11
|
+
# :nodoc:
|
12
|
+
module Gengou
|
13
|
+
#
|
14
|
+
# Counter 加算元号
|
15
|
+
#
|
16
|
+
class Counter
|
17
|
+
# @return [Integer] 不正値
|
18
|
+
INVALID_YEAR = -1
|
19
|
+
|
20
|
+
# @return [Japan::Gengou] 元号
|
21
|
+
attr_reader :gengou
|
22
|
+
# @return [Integer] 元号年
|
23
|
+
attr_reader :japan_year
|
24
|
+
# @return [Integer] 西暦年
|
25
|
+
attr_reader :western_year
|
26
|
+
|
27
|
+
#
|
28
|
+
# 初期化
|
29
|
+
#
|
30
|
+
# @param [Japan::Gengou] gengou 元号
|
31
|
+
#
|
32
|
+
def initialize(gengou: Japan::Gengou.new)
|
33
|
+
@gengou = gengou
|
34
|
+
@japan_year = gengou.both_start_year.japan
|
35
|
+
@western_year = gengou.both_start_year.western
|
36
|
+
end
|
37
|
+
|
38
|
+
#
|
39
|
+
# 和暦開始日を取得する
|
40
|
+
#
|
41
|
+
# @return [Japan::Calendar] 和暦開始日
|
42
|
+
#
|
43
|
+
def japan_start_date
|
44
|
+
return Japan::Calendar.new if @gengou.invalid?
|
45
|
+
|
46
|
+
@gengou.both_start_date.japan
|
47
|
+
end
|
48
|
+
|
49
|
+
#
|
50
|
+
# 西暦開始日を取得する
|
51
|
+
#
|
52
|
+
# @return [Western::Calendar] 西暦開始日
|
53
|
+
#
|
54
|
+
def western_start_date
|
55
|
+
return Western::Calendar.new if @gengou.invalid?
|
56
|
+
|
57
|
+
@gengou.both_start_date.western
|
58
|
+
end
|
59
|
+
|
60
|
+
#
|
61
|
+
# 西暦終了日を取得する
|
62
|
+
#
|
63
|
+
# @return [Western::Calendar] 西暦終了日
|
64
|
+
#
|
65
|
+
def western_end_date
|
66
|
+
return Western::Calendar.new if @gengou.invalid?
|
67
|
+
|
68
|
+
@gengou.end_date
|
69
|
+
end
|
70
|
+
|
71
|
+
#
|
72
|
+
# 次年にする
|
73
|
+
#
|
74
|
+
# @return [MultiGengou] 自身
|
75
|
+
#
|
76
|
+
def next_year
|
77
|
+
@japan_year += 1
|
78
|
+
@western_year += 1
|
79
|
+
|
80
|
+
self
|
81
|
+
end
|
82
|
+
|
83
|
+
#
|
84
|
+
# 元号名を取得する
|
85
|
+
#
|
86
|
+
# @return [String] 元号名
|
87
|
+
#
|
88
|
+
def name
|
89
|
+
return '' unless @gengou
|
90
|
+
|
91
|
+
@gengou.name
|
92
|
+
end
|
93
|
+
|
94
|
+
#
|
95
|
+
# 不正か
|
96
|
+
#
|
97
|
+
# @return [True] 不正
|
98
|
+
# @return [False] 不正なし
|
99
|
+
#
|
100
|
+
def invalid?
|
101
|
+
@gengou.invalid? || @japan_year == INVALID_YEAR || @western_year == INVALID_YEAR
|
102
|
+
end
|
103
|
+
|
104
|
+
#
|
105
|
+
# 指定した日が元号に含まれるか
|
106
|
+
#
|
107
|
+
# @param [Western::Calendar] date 日
|
108
|
+
#
|
109
|
+
# @return [True] 含まれる
|
110
|
+
# @return [False] 含まれない
|
111
|
+
#
|
112
|
+
def include?
|
113
|
+
@gengou.include?
|
114
|
+
end
|
115
|
+
|
116
|
+
#
|
117
|
+
# ディープコピー
|
118
|
+
#
|
119
|
+
# @param [MultiGengou] obj 自身
|
120
|
+
#
|
121
|
+
def initialize_copy(obj)
|
122
|
+
@gengou = obj.gengou.clone
|
123
|
+
@japan_year = obj.japan_year
|
124
|
+
@western_year = obj.western_year
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
@@ -0,0 +1,183 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../../../era/western/calendar'
|
4
|
+
|
5
|
+
require_relative './list'
|
6
|
+
|
7
|
+
# :nodoc:
|
8
|
+
module Zakuro
|
9
|
+
# :nodoc:
|
10
|
+
module Calculation
|
11
|
+
# :nodoc:
|
12
|
+
module Gengou
|
13
|
+
# :nodoc:
|
14
|
+
module Reserve
|
15
|
+
# Interval
|
16
|
+
#
|
17
|
+
# 予約済み計算範囲
|
18
|
+
#
|
19
|
+
class Interval
|
20
|
+
# @return [List] 1行目元号
|
21
|
+
attr_reader :first_gengou
|
22
|
+
# @return [List] 2行目元号
|
23
|
+
attr_reader :second_gengou
|
24
|
+
|
25
|
+
#
|
26
|
+
# 初期化
|
27
|
+
#
|
28
|
+
# @param [Western::Calendar] start_date 西暦開始日
|
29
|
+
# @param [Western::Calendar] end_date 西暦終了日
|
30
|
+
#
|
31
|
+
def initialize(start_date: Western::Calendar.new, end_date: Western::Calendar.new)
|
32
|
+
@first_gengou = List.new(first: true, start_date: start_date, end_date: end_date)
|
33
|
+
@second_gengou = List.new(first: false, start_date: start_date, end_date: end_date)
|
34
|
+
end
|
35
|
+
|
36
|
+
#
|
37
|
+
# 不正か
|
38
|
+
#
|
39
|
+
# @return [True] 不正
|
40
|
+
# @return [False] 不正なし
|
41
|
+
#
|
42
|
+
def invalid?
|
43
|
+
@first_gengou.invalid?
|
44
|
+
end
|
45
|
+
|
46
|
+
#
|
47
|
+
# 1行目元号を取得する
|
48
|
+
#
|
49
|
+
# @param [Western::Calendar] western_date 西暦日
|
50
|
+
#
|
51
|
+
# @return [Gengou::Counter] 加算元号
|
52
|
+
#
|
53
|
+
def match_first_gengou(western_date: Western::Calendar.new)
|
54
|
+
@first_gengou.get(western_date: western_date)
|
55
|
+
end
|
56
|
+
|
57
|
+
#
|
58
|
+
# 2行目元号を取得する
|
59
|
+
#
|
60
|
+
# @param [Western::Calendar] western_date 西暦日
|
61
|
+
#
|
62
|
+
# @return [Gengou::Counter] 加算元号
|
63
|
+
#
|
64
|
+
def match_second_gengou(western_date: Western::Calendar.new)
|
65
|
+
@second_gengou.get(western_date: western_date)
|
66
|
+
end
|
67
|
+
|
68
|
+
#
|
69
|
+
# 範囲内元号(1行目元号)を取得する
|
70
|
+
#
|
71
|
+
# @param [Western::Calendar] start_date 西暦開始日
|
72
|
+
# @param [Western::Calendar] end_date 西暦終了日
|
73
|
+
#
|
74
|
+
# @return [Array<Gengou::Counter>] 範囲内元号(1行目元号)
|
75
|
+
#
|
76
|
+
def collect_first_gengou(start_date: Western::Calendar.new,
|
77
|
+
end_date: Western::Calendar.new)
|
78
|
+
@first_gengou.collect(start_date: start_date, end_date: end_date)
|
79
|
+
end
|
80
|
+
|
81
|
+
#
|
82
|
+
# 範囲内元号(2行目元号)を取得する
|
83
|
+
#
|
84
|
+
# @param [Western::Calendar] start_date 西暦開始日
|
85
|
+
# @param [Western::Calendar] end_date 西暦終了日
|
86
|
+
#
|
87
|
+
# @return [Array<Gengou::Counter>] 範囲内元号(2行目元号)
|
88
|
+
#
|
89
|
+
def collect_second_gengou(start_date: Western::Calendar.new,
|
90
|
+
end_date: Western::Calendar.new)
|
91
|
+
@second_gengou.collect(start_date: start_date, end_date: end_date)
|
92
|
+
end
|
93
|
+
|
94
|
+
#
|
95
|
+
# 最古の元号から和暦開始日を取得する
|
96
|
+
#
|
97
|
+
# @return [Japan::Calendar] 和暦開始日
|
98
|
+
#
|
99
|
+
def japan_start_date
|
100
|
+
gengou = oldest_gengou
|
101
|
+
|
102
|
+
return Japan::Calendar.new if gengou.invalid?
|
103
|
+
|
104
|
+
gengou.japan_start_date
|
105
|
+
end
|
106
|
+
|
107
|
+
#
|
108
|
+
# 最古の元号から西暦開始日を取得する
|
109
|
+
#
|
110
|
+
# @return [Western::Calendar] 西暦開始日
|
111
|
+
#
|
112
|
+
def western_start_date
|
113
|
+
gengou = oldest_gengou
|
114
|
+
|
115
|
+
return Western::Calendar.new if gengou.invalid?
|
116
|
+
|
117
|
+
gengou.western_start_date
|
118
|
+
end
|
119
|
+
|
120
|
+
#
|
121
|
+
# 開始西暦年を取得する
|
122
|
+
#
|
123
|
+
# @return [Integer] 開始西暦年
|
124
|
+
#
|
125
|
+
def western_start_year
|
126
|
+
first_start_year = @first_gengou.western_start_year
|
127
|
+
second_start_year = @second_gengou.western_start_year
|
128
|
+
|
129
|
+
return first_start_year if @first_gengou.invalid?
|
130
|
+
|
131
|
+
return first_start_year if @second_gengou.invalid?
|
132
|
+
|
133
|
+
return first_start_year if first_start_year < second_start_year
|
134
|
+
|
135
|
+
second_start_year
|
136
|
+
end
|
137
|
+
|
138
|
+
#
|
139
|
+
# 終了西暦年を取得する
|
140
|
+
#
|
141
|
+
# @return [Integer] 終了西暦年
|
142
|
+
#
|
143
|
+
def western_end_year
|
144
|
+
first_end_year = @first_gengou.western_end_year
|
145
|
+
second_end_year = @second_gengou.western_end_year
|
146
|
+
|
147
|
+
return first_end_year if @first_gengou.invalid?
|
148
|
+
|
149
|
+
return first_end_year if @second_gengou.invalid?
|
150
|
+
|
151
|
+
return first_end_year if first_end_year > second_end_year
|
152
|
+
|
153
|
+
second_end_year
|
154
|
+
end
|
155
|
+
|
156
|
+
private
|
157
|
+
|
158
|
+
#
|
159
|
+
# 最古の元号を取得する
|
160
|
+
#
|
161
|
+
# @return [Japan::Gengou] 最古の元号
|
162
|
+
#
|
163
|
+
def oldest_gengou
|
164
|
+
return @first_gengou if @first_gengou.invalid?
|
165
|
+
|
166
|
+
return @first_gengou if @second_gengou.invalid?
|
167
|
+
|
168
|
+
first_western_date = @first_gengou.western_start_date
|
169
|
+
second_western_date = @second_gengou.western_start_date
|
170
|
+
|
171
|
+
return @first_gengou if first_western_date.invalid?
|
172
|
+
|
173
|
+
return @first_gengou if second_western_date.invalid?
|
174
|
+
|
175
|
+
return @first_gengou if first_western_date < second_western_date
|
176
|
+
|
177
|
+
@second_gengou
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|