zakuro 0.9.1 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
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