zakuro 0.9.1 → 0.9.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 64217957bc4e6be2fa7fe5e0414a3cfc4d64a424bd0a3f8d407ad911f1a4418f
4
- data.tar.gz: 5042fd68cdb7cd76cf5b62de725db105912f14b29cc4849cdaaa1cff3110424a
3
+ metadata.gz: eef9c974d34a357b894544e6fdd53aa5fd2b33e6586c82dd1358ffc899b1ea7b
4
+ data.tar.gz: 190feb3886ad674687408879ee217a7a9e345c4c18d01df5ab933696ab8c531d
5
5
  SHA512:
6
- metadata.gz: e4d7637971c69f269591897e645df48077eeb4504cb1c7766c0414ae3c82f190a832051dfd139589a2c04c4ba1541bbb4e89d20a755bb0a0b513c23e1f4ae633
7
- data.tar.gz: 198cd920eb173788dc1f02e511a40f84a86d2aea10e509e2fe16bb4872244d405201ac4794e10f09232e84b01f7354208b3400304506f7efb3d6df9b184fadea
6
+ metadata.gz: 0741d6b76105d9d68fb7ecd871020e960069e8c4db157731c516262ee9ff402a269321e9ca977036e04aaa33a9567f372d10263b8b6067929d449cbb6c0a4bb3
7
+ data.tar.gz: e804acf9242d08991f4a6eb92e8f72604b60fc00895257014e87535511bd4cac5a3563fb87cb0bf25fef478e8784c908d76d4953c56343b3ca81e212aee127a2
data/README.md CHANGED
@@ -40,28 +40,30 @@ Or install it yourself as:
40
40
 
41
41
  1日検索/期間検索に対応しております。
42
42
 
43
- 下記表で対応済の暦は使用可能です。
44
-
45
- |開始日|暦 |計算方法|対応|
46
- |:----|:----|:----|:----|
47
- |445/01/24|元嘉暦| |✓|
48
- |698/02/16|儀鳳暦|A|✓|
49
- | | |B|-|
50
- | | |C|-|
51
- |764/02/07|大衍暦|A|✓|
52
- | | |B|-|
53
- | | |C|-|
54
- |862/02/03|宣明暦| |✓|
55
- |1685/02/04|貞享暦| |-|
56
- |1755/02/11|宝暦暦| |-|
57
- |1798/02/16|寛政暦| |-|
58
- |1844/02/18|天保暦| |-|
59
- |1872/12/09|グレゴリオ暦| |-|
43
+ 下記表で暦算ありの暦は使用可能です。
44
+
45
+ |開始日|暦 |計算方法|暦算|没日|滅日|
46
+ |:----|:----|:----|:---|:---|:---|
47
+ |445/01/24|元嘉暦| |✓|-|-|
48
+ |698/02/16|儀鳳暦|A|✓|-|-|
49
+ | | |B|-|-|-|
50
+ | | |C|-|-|-|
51
+ |764/02/07|大衍暦|A|✓|✓|✓|
52
+ | | |B|-|-|-|
53
+ | | |C|-|-|-|
54
+ |862/02/03|宣明暦| |✓|✓|✓|
55
+ |1685/02/04|貞享暦| |-|-|-|
56
+ |1755/02/11|宝暦暦| |-|-|-|
57
+ |1798/02/16|寛政暦| |-|-|-|
58
+ |1844/02/18|天保暦| |-|-|-|
59
+ |1872/12/09|グレゴリオ暦| |-|-|-|
60
60
 
61
61
  表中A-Cは月の運動の計算手順ごとに分類されます。
62
62
 
63
63
  現在は「長慶宣明暦算法」の計算手順Aのみ対応しております。
64
64
 
65
+ 「没日」「滅日」は計算できますが、正誤を確認中です。
66
+
65
67
  # 使用方法
66
68
 
67
69
  [使用方法](./doc/usage.md) を参照してください。
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.1
1
+ 0.9.2
data/doc/condition.md CHANGED
@@ -33,4 +33,6 @@
33
33
  | 四季 | seasons | TRUE | | 四季あり |
34
34
  | | | FALSE | | 四季なし(デフォルト) |
35
35
 
36
- 現時点では宣明暦の [没日](./doc/dropped_date.md) のみ試験的に対応しております(結果未検証)。
36
+ 現時点では次の項目を試験的に対応しております(結果未検証)。
37
+ * [没日](./dropped_date.md)
38
+ * [滅日](./vanished_date.md)
data/doc/expection.md CHANGED
@@ -106,3 +106,14 @@
106
106
  | 二十四節気 | | solar_term | | Zakuro::Result::Data::Option::DroppedDate::SolarTerm | | |
107
107
  | 二十四節気番号 | | | index | Integer | 6 | |
108
108
  | 二十四節気の大余小余 | | | remainder | String | 49-7203 | |
109
+
110
+ #### Zakuro::Result::Data::Option::VanishedDate::Option
111
+
112
+ キー: vanished_date
113
+
114
+ | 項目名 | キー名 | - | - | データ型 | 参考値 | 備考 |
115
+ | -------------------- | ----------- | ---------- | --------- | ------------------------------------------------------ | -------- | ------------------ |
116
+ | オプション値有無 | matched | | | True/False | true | |
117
+ | 演算値 | calculation | | | Zakuro::Result::Data::Option::VanishedDate::Calculation | | |
118
+ | 滅余 | | remainder | | String | 33-2666 | |
119
+ | 経朔 | | average_remainder | | String | 5-3769 | |
@@ -364,8 +364,8 @@
364
364
  ,228-1-1,-,-,228,1,1089-2-14,寛治 3年 1 大 壬申 9-6402,"計算では9癸酉であるが, 四大を避けるため壬申朔となった。正月壬申朔のユリウス暦日は2月13日。(大日本史料第3編の1; 中右記・扶桑略記・後二条師通記)。",-,true,四大回避,-,-,大,大,-,-,-,-,-,-,癸酉,壬申,1089-2-14,1089-2-13,9,8,-1,-1,-,-,-
365
365
  ,230-1-a,-,230-1-1,230,-,1095-1-9,嘉保 1年 12 小 戊辰 4-3361,-,-,true,次月大小,-,-,大,小,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
366
366
  ,230-1-1,-,-,230,1,1095-2-8,嘉保 2年 1 大 丁酉 34-7200,"計算では34戊戌であるが, 中右記により丁酉朔, 正月丁酉朔のユリウス暦日は2月7日。これは嘉保元年の年間日数が385日になるのを避けるための変更である。",-,true,年日数,-,-,小,大,-,-,-,-,-,-,戊戌,丁酉,1095-2-8,1095-2-7,34,33,-1,-1,-,-,-
367
- ,242-1-a,-,242-1-1,242,-,1129-8-17,大治 4年 閏7 小 丁未 43-1179,-,-,true,次月大小,-,-,大,小,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
368
- ,242-1-1,-,-,242,1,1129-9-16,大治 4年 8 大 丙子 13-6547,"計算は13丁丑であるが中右記により丙子, 8月丙子朔のユリウス暦日は9月15日となる。これは皇和通暦で中根元圭が「章首の後, 閏法もし8月を得ればまた必ず大小を消息してこれを7月に退く」と書いてあるように, このあとも何回かこの理由で干支が変更され, 閏が8月から7月に移された。これを退閏という。",-,true,退閏,-,-,大,大,-,-,-,-,-,-,丁丑,丙子,1129-9-16,1129-9-15,13,12,-1,-1,-,-,-
367
+ ,242-1-a,-,242-1-1,242,-,1129-8-17,大治 4年 閏7 小 丁未 43-1179,-,-,true,次月大小,8月,閏7月,大,小,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
368
+ ,242-1-1,-,-,242,1,1129-9-16,大治 4年 8 大 丙子 13-6547,"計算は13丁丑であるが中右記により丙子, 8月丙子朔のユリウス暦日は9月15日となる。これは皇和通暦で中根元圭が「章首の後, 閏法もし8月を得ればまた必ず大小を消息してこれを7月に退く」と書いてあるように, このあとも何回かこの理由で干支が変更され, 閏が8月から7月に移された。これを退閏という。",-,true,退閏,閏8月,8月,大,大,-,-,-,-,-,-,丁丑,丙子,1129-9-16,1129-9-15,13,12,-1,-1,-,-,-
369
369
  ,245-1-a,-,245-1-1,245,-,1138-1-13,保延 3年 12 小 戊午 54-2825,-,-,true,次月大小,-,-,大,小,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
370
370
  ,245-1-1,-,-,245,1,1138-2-12,保延 4年 1 大 丁亥 24-6432,"計算では24戊子であるが中右記により丁亥, 正月丁亥朔のユリウス暦日は2月11日となる。保延3年の年間日数の385日になるのを避けるためである。",-,true,年日数,-,-,小,大,-,-,-,-,-,-,戊子,丁亥,1138-2-12,1138-2-11,24,23,-1,-1,-,-,-
371
371
  ,251-1-a,-,251-1-1,251,-,1156-11-15,保元 1年 10 小 己亥 35-1816,-,-,true,次月大小,-,-,大,小,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
@@ -469,8 +469,8 @@
469
469
  ,346-0-1,-,-,346,-,1441-12-14/1442-1-13,-,計算では朔旦冬至となる。これを臨時朔旦冬至として避けるために甲子を癸亥にして冬至を11月2日にしたもの。12月の変更は計算通り甲午にしておくと11月が31日になってしまうから。,-,false,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
470
470
  ,348-1-a,-,348-1-1,348,-,1449-10-17,宝徳 1年 10 小 戊申 44-2244,-,-,true,次月大小,-,-,大,小,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
471
471
  ,348-1-1,348-0-1,-,348,1,1449-11-16,宝徳 1年 閏10 小 丁丑 14-22,"計算では14戊寅, 康富記により丁丑, 閏10月丁丑朔のユリウス暦日は11月15日となる。",-,true,朔旦冬至,11月,閏10月,小,小,0,-,-,-,1449-12-15,-,戊寅,丁丑,1449-11-16,1449-11-15,14,13,-1,-1,-,-,-
472
- ,348-2-1,348-0-1,-,348,2,1449-12-15,宝徳 1年 11 大 丙午 43-5895,"計算では43丁未, 康富記により丙午, 11月丙午朔のユリウス暦日は12月14日となる。",-,true,朔旦冬至,閏11月,11月,大,大,-,0,-,-,-,1449-11-16,丁未,丙午,1449-12-15,1449-12-14,43,42,-1,-1,-,-,-
473
- ,348-3-1,348-0-1,-,348,3,1450-1-14,宝徳 1年 12 大 丙子 13-2995,"計算では13丁丑, 康富記により丙子, 12月丙子朔のユリウス暦日は1月13日となる。",-,true,朔旦冬至,-,-,大,大,-,-,-,-,-,-,丁丑,丙子,1450-1-14,1450-1-13,13,12,-1,-1,-,-,-
472
+ ,348-2-1,348-0-1,-,348,2,1449-12-15,宝徳 1年 11 大 丙午 43-5895,"計算では43丁未, 康富記により丙午, 11月丙午朔のユリウス暦日は12月14日となる。",-,true,朔旦冬至,12月,11月,大,大,-,0,-,-,-,1449-11-16,丁未,丙午,1449-12-15,1449-12-14,43,42,-1,-1,-,-,-
473
+ ,348-3-1,348-0-1,-,348,3,1450-1-14,宝徳 1年 12 大 丙子 13-2995,"計算では13丁丑, 康富記により丙子, 12月丙子朔のユリウス暦日は1月13日となる。",-,true,朔旦冬至,閏12月,12月,大,大,-,-,-,-,-,-,丁丑,丙子,1450-1-14,1450-1-13,13,12,-1,-1,-,-,-
474
474
  ,348-0-1,-,-,348,-,1449-11-16/1450-2-13,-,"計算では冬至が11月晦日になるのを, 強いて朔旦冬至にするため計算の12月丁未朔を11月丙午朔に変え閏を10月に移動させた。閏10月朔を計算通り戊寅朔にしておくと閏10月は28日しかなくなってしまう。11月朔丙午, 翌宝徳2年2月丙子とからその間の12月正月の干支は丙子, 丙子に変えないと31日の月ができてしまう。",-,false,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
475
475
  ,349-1-1,348-0-1,-,349,1,1450-2-13,宝徳 2年 1 大 丙午 43-7539,"計算では13丁未, 康富記により丙午, 正月丙午朔のユリウス暦日は2月12日となる。(前項の注記参照)",日本暦日原典の誤り。「丁未」ではなく「丁丑」,true,朔旦冬至,-,-,小,大,-,-,-,-,-,-,丁未,丙午,1450-2-13,1450-2-12,43,42,-1,-1,-,-,-
476
476
  ,355-1-a,-,355-1-1,355,-,1468-10-16,応仁 2年 10 大 丁亥 23-4972,-,変更なし,false,次月大小,-,-,大,大,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
Binary file
@@ -23,9 +23,9 @@ module Zakuro
23
23
  attr_reader :monthly_last_date
24
24
  # @return [Reserve::AbstractRange] 予約範囲
25
25
  attr_reader :range
26
- # @return [Array<Counte>] 1行目元号
26
+ # @return [Array<Counter>] 1行目元号
27
27
  attr_reader :first_gengou
28
- # @return [Array<Counte>] 2行目元号
28
+ # @return [Array<Counter>] 2行目元号
29
29
  attr_reader :second_gengou
30
30
  # @return [Connector] 行変更済元号
31
31
  attr_reader :connector
@@ -142,7 +142,7 @@ module Zakuro
142
142
  first_last_year = first_list.western_last_year
143
143
  second_last_year = second_list.western_last_year
144
144
 
145
- return first_last_year if first_list.invalid?
145
+ return second_last_year if first_list.invalid?
146
146
 
147
147
  return first_last_year if second_list.invalid?
148
148
 
@@ -187,7 +187,7 @@ module Zakuro
187
187
  first_western_date = first_list.western_start_date
188
188
  second_western_date = second_list.western_start_date
189
189
 
190
- return first_list if first_western_date.invalid?
190
+ return second_list if first_western_date.invalid?
191
191
 
192
192
  return first_list if second_western_date.invalid?
193
193
 
@@ -203,11 +203,11 @@ module Zakuro
203
203
  # @return [False] 不正なし
204
204
  #
205
205
  def invalid_list?
206
- return true if first_list.invalid?
206
+ return false unless first_list.invalid?
207
207
 
208
- return true if second_list.invalid?
208
+ return false unless second_list.invalid?
209
209
 
210
- false
210
+ true
211
211
  end
212
212
  end
213
213
  end
@@ -58,7 +58,7 @@ module Zakuro
58
58
  first_western_date = first_list.western_last_date
59
59
  second_western_date = second_list.western_last_date
60
60
 
61
- return first_list if first_western_date.invalid?
61
+ return second_list if first_western_date.invalid?
62
62
 
63
63
  return first_list if second_western_date.invalid?
64
64
 
@@ -101,7 +101,8 @@ module Zakuro
101
101
 
102
102
  @first_day = FirstDay.new(
103
103
  western_date: rewrite_western_date(days: days),
104
- remainder: rewrite_remainder(days: days)
104
+ remainder: rewrite_remainder(days: days),
105
+ average_remainder: rewrite_average_remainder(days: days)
105
106
  )
106
107
  end
107
108
 
@@ -121,6 +122,22 @@ module Zakuro
121
122
  remainder
122
123
  end
123
124
 
125
+ #
126
+ # 月初日の大余小余を日差分で書き換える(経朔)
127
+ #
128
+ # @param [Integer] days 日差分
129
+ #
130
+ # @return [Remainder] 月初日の大余小余
131
+ #
132
+ def rewrite_average_remainder(days:)
133
+ remainder = first_day.average_remainder.clone
134
+ remainder.add!(
135
+ context.resolver.remainder.new(day: days, minute: 0, second: 0)
136
+ )
137
+
138
+ remainder
139
+ end
140
+
124
141
  #
125
142
  # 月初日の西暦日を日差分で書き換える
126
143
  #
@@ -78,23 +78,24 @@ module Zakuro
78
78
 
79
79
  dropped_date = location.get
80
80
 
81
- return option unless remainder.day == dropped_date.day
82
-
83
- dropped_date_option(location: location)
81
+ dropped_date_option(
82
+ matched: remainder.day == dropped_date.day, location: location
83
+ )
84
84
  end
85
85
 
86
86
  #
87
87
  # 没日オプション値を生成する
88
88
  #
89
+ # @param [True, False] matched 没日有無
89
90
  # @param [Calculation::Option::DroppedDate::Location] location 没日位置
90
91
  #
91
92
  # @return [Result::Data::Option::DroppedDate::Option] 没日オプション値
92
93
  #
93
- def dropped_date_option(location:)
94
+ def dropped_date_option(matched:, location:)
94
95
  dropped_date = location.get
95
96
  solar_term = location.solar_term
96
97
  Result::Data::Option::DroppedDate::Option.new(
97
- matched: true,
98
+ matched: matched,
98
99
  calculation: Result::Data::Option::DroppedDate::Calculation.new(
99
100
  remainder: dropped_date.format,
100
101
  solar_term: Result::Data::SolarTerm.new(
@@ -108,41 +109,47 @@ module Zakuro
108
109
  #
109
110
  # 滅日を求める
110
111
  #
111
- # @param [<Type>] context <description>
112
- # @param [<Type>] remainder <description>
113
- # @param [<Type>] average_remainder <description>
112
+ # @param [Context::Context] context 暦コンテキスト
113
+ # @param [Cycle::AbstractRemainder] remainder 当日和暦日
114
+ # @param [Cycle::AbstractRemainder] average_remainder 経朔
114
115
  #
115
- # @return [<Type>] <description>
116
+ # @return [Result::Data::Option::VanishedDate::Option] 滅日オプション値
116
117
  #
117
118
  def vanished_date(context:, remainder:, average_remainder:)
118
- option = Result::Data::Option::VanishedDate::Option.new
119
-
120
- return option if average_remainder.invalid?
119
+ return Result::Data::Option::VanishedDate::Option.new if average_remainder.invalid?
121
120
 
122
121
  location = Calculation::Option::VanishedDate::Location.new(
123
122
  context: context, average_remainder: average_remainder
124
123
  )
125
124
 
126
- return option unless location.exist?
125
+ unless location.exist?
126
+ # 結果確認のため経朔だけは設定する
127
+ return Result::Data::Option::VanishedDate::Option.new(
128
+ calculation: Result::Data::Option::VanishedDate::Calculation.new(
129
+ average_remainder: average_remainder
130
+ )
131
+ )
132
+ end
127
133
 
128
134
  vanished_date = location.get
129
135
 
130
- return option unless remainder.day == vanished_date.day
131
-
132
- vanished_date_option(location: location)
136
+ vanished_date_option(
137
+ matched: remainder.day == vanished_date.day, location: location
138
+ )
133
139
  end
134
140
 
135
141
  #
136
142
  # 滅日オプション値を生成する
137
143
  #
138
- # @param [Calculation::Option::DroppedDate::Location] location 滅日位置
144
+ # @param [True, False] matched 滅日有無
145
+ # @param [Calculation::Option::VanishedDate::Location] location 滅日位置
139
146
  #
140
- # @return [Result::Data::Option::DroppedDate::Option] 滅日オプション値
147
+ # @return [Result::Data::Option::VanishedDate::Option] 滅日オプション値
141
148
  #
142
- def vanished_date_option(location:)
149
+ def vanished_date_option(matched:, location:)
143
150
  vanished_date = location.get
144
151
  Result::Data::Option::VanishedDate::Option.new(
145
- matched: true,
152
+ matched: matched,
146
153
  calculation: Result::Data::Option::VanishedDate::Calculation.new(
147
154
  remainder: vanished_date.format,
148
155
  average_remainder: location.average_remainder
@@ -98,7 +98,7 @@ module Zakuro
98
98
  # @return [Calendar] 年月日情報(和暦)
99
99
  #
100
100
  def parse(regex: FORMAT, text: '')
101
- return Calendar.new unless valid_date_string(regex: regex, text: text)
101
+ return Calendar.new unless valid_date_text(regex: regex, text: text)
102
102
 
103
103
  matched = text.match(regex)
104
104
 
@@ -120,7 +120,7 @@ module Zakuro
120
120
  # @return [True] 正しい
121
121
  # @return [True] 正しくない
122
122
  #
123
- def valid_date_string(regex: FORMAT, text: '')
123
+ def valid_date_text(regex: FORMAT, text: '')
124
124
  return false unless text
125
125
 
126
126
  matched = text.match(regex)
@@ -315,7 +315,7 @@ module Zakuro
315
315
  # @return [False] 正しくない
316
316
  #
317
317
  def japan?
318
- Japan::Calendar.valid_date_string(text: japan)
318
+ Japan::Calendar.valid_date_text(text: japan)
319
319
  end
320
320
 
321
321
  #
@@ -325,7 +325,7 @@ module Zakuro
325
325
  # @return [False] 正しくない
326
326
  #
327
327
  def western?
328
- Western::Calendar.valid_date_string(text: western)
328
+ Western::Calendar.valid_date_text(text: western)
329
329
  end
330
330
  end
331
331
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative './date_text'
4
+
3
5
  require 'date'
4
6
 
5
7
  # :nodoc:
@@ -402,9 +404,7 @@ module Zakuro
402
404
  # @raise [ArgumentError] 引数エラー
403
405
  #
404
406
  def parse(text: '', type: Type::DEFAULT)
405
- unless valid_date_string(text: text, type: type)
406
- raise ArgumentError, "invalid date string: #{text}"
407
- end
407
+ raise ArgumentError, "invalid date string: #{text}" unless valid_date_text(text: text)
408
408
 
409
409
  start = DATE_START.fetch(type, DATE_START[Type::DEFAULT])
410
410
  date = Date.parse(text, start)
@@ -423,14 +423,8 @@ module Zakuro
423
423
  # @return [True] 正しい
424
424
  # @return [True] 正しくない
425
425
  #
426
- def valid_date_string(text: '', type: Type::DEFAULT)
427
- start = DATE_START.fetch(type, DATE_START[Type::DEFAULT])
428
- begin
429
- Date.parse(text, start)
430
- rescue ArgumentError => _e
431
- return false
432
- end
433
- true
426
+ def valid_date_text(text: '')
427
+ DateText.validate(text: text)
434
428
  end
435
429
  end
436
430
  end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Zakuro
5
+ #
6
+ # Western 西暦
7
+ #
8
+ module Western
9
+ #
10
+ # DateText 日付文字列
11
+ #
12
+ module DateText
13
+ # @return [Regexp] ハイフン区切り
14
+ HYPHEN = /^[0-9]{1,5}-[0-9]{1,2}-[0-9]{1,2}$/.freeze
15
+ # @return [Regexp] スラッシュ区切り
16
+ SLASH = %r{^[0-9]{1,5}/[0-9]{1,2}/[0-9]{1,2}$}.freeze
17
+
18
+ #
19
+ # 有効な日付文字列か検証する
20
+ #
21
+ # * 従来は Date.parse で日付文字列を検証していた
22
+ # * [貞観4年3月20日] のような文字列でも有効扱いになっていた
23
+ # * [20] [20日] のように2桁の数字が含まれると有効な日付扱いされる
24
+ # * 特定のフォーマットのみ受け付けるように改変した
25
+ #
26
+ # @param [String] text 文字列
27
+ #
28
+ # @return [True] 有効
29
+ # @return [True] 無効
30
+ #
31
+ def self.validate(text: '')
32
+ return true if HYPHEN.match(text)
33
+
34
+ return true if SLASH.match(text)
35
+
36
+ false
37
+ end
38
+ end
39
+ end
40
+ end
@@ -112,12 +112,12 @@ module Zakuro
112
112
  # @param [String] text 日付文字列
113
113
  #
114
114
  def parse_text(text:)
115
- if Western::Calendar.valid_date_string(text: text)
115
+ if Western::Calendar.valid_date_text(text: text)
116
116
  @western_date = Western::Calendar.parse(text: text)
117
117
  return
118
118
  end
119
119
 
120
- return unless Japan::Calendar.valid_date_string(text: text)
120
+ return unless Japan::Calendar.valid_date_text(text: text)
121
121
 
122
122
  @japan_date = Japan::Calendar.parse(text: text)
123
123
  end
@@ -136,7 +136,13 @@ module Zakuro
136
136
  def western_date?(str: '')
137
137
  return Western::Calendar.new if str == EMPTY_STRING
138
138
 
139
- Western::Calendar.valid_date_string(text: str)
139
+ # 1316-11-16/1317-4-13
140
+ dates = str.split('/')
141
+ dates.each do |date|
142
+ return true if Western::Calendar.valid_date_text(text: date)
143
+ end
144
+
145
+ false
140
146
  end
141
147
  end
142
148
  end
@@ -11697,11 +11697,11 @@
11697
11697
  diffs:
11698
11698
  month:
11699
11699
  number:
11700
- src: "-"
11701
- dest: "-"
11700
+ src: '8'
11701
+ dest: '7'
11702
11702
  leaped:
11703
- src: "-"
11704
- dest: "-"
11703
+ src: 'false'
11704
+ dest: 'true'
11705
11705
  days:
11706
11706
  src: 大
11707
11707
  dest: 小
@@ -11730,11 +11730,11 @@
11730
11730
  diffs:
11731
11731
  month:
11732
11732
  number:
11733
- src: "-"
11734
- dest: "-"
11733
+ src: '8'
11734
+ dest: '8'
11735
11735
  leaped:
11736
- src: "-"
11737
- dest: "-"
11736
+ src: 'true'
11737
+ dest: 'false'
11738
11738
  days:
11739
11739
  src: 大
11740
11740
  dest: 大
@@ -15070,10 +15070,10 @@
15070
15070
  diffs:
15071
15071
  month:
15072
15072
  number:
15073
- src: '11'
15073
+ src: '12'
15074
15074
  dest: '11'
15075
15075
  leaped:
15076
- src: 'true'
15076
+ src: 'false'
15077
15077
  dest: 'false'
15078
15078
  days:
15079
15079
  src: 大
@@ -15102,11 +15102,11 @@
15102
15102
  diffs:
15103
15103
  month:
15104
15104
  number:
15105
- src: "-"
15106
- dest: "-"
15105
+ src: '12'
15106
+ dest: '12'
15107
15107
  leaped:
15108
- src: "-"
15109
- dest: "-"
15108
+ src: 'true'
15109
+ dest: 'false'
15110
15110
  days:
15111
15111
  src: 大
15112
15112
  dest: 大
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.1
4
+ version: 0.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - pldb
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-11-25 00:00:00.000000000 Z
11
+ date: 2022-12-29 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: mainly lunar solar calendar
14
14
  email:
@@ -143,6 +143,7 @@ files:
143
143
  - lib/zakuro/era/japan/gengou/resource/yaml/set-003-modern.yaml
144
144
  - lib/zakuro/era/japan/version.rb
145
145
  - lib/zakuro/era/western/calendar.rb
146
+ - lib/zakuro/era/western/date_text.rb
146
147
  - lib/zakuro/exception/case/pattern.rb
147
148
  - lib/zakuro/exception/case/preset.rb
148
149
  - lib/zakuro/exception/case/template.rb