when_exe 0.3.2 → 0.3.3
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.
- data/LICENSE.ja.txt +25 -25
- data/LICENSE.txt +31 -31
- data/bin/locales.rb +2 -1
- data/bin/when.rb.config +1 -1
- data/lib/when_exe.rb +70 -48
- data/lib/when_exe/basictypes.rb +99 -65
- data/lib/when_exe/calendartypes.rb +40 -178
- data/lib/when_exe/coordinates.rb +156 -62
- data/lib/when_exe/core/compatibility.rb +10 -0
- data/lib/when_exe/core/extension.rb +40 -0
- data/lib/when_exe/ephemeris.rb +112 -50
- data/lib/when_exe/icalendar.rb +125 -91
- data/lib/when_exe/inspect.rb +100 -48
- data/lib/when_exe/locales/ar.rb +48 -48
- data/lib/when_exe/locales/bg.rb +1 -1
- data/lib/when_exe/locales/bs.rb +4 -2
- data/lib/when_exe/locales/ca.rb +1 -1
- data/lib/when_exe/locales/en_CA.rb +3 -4
- data/lib/when_exe/locales/en_IE.rb +88 -0
- data/lib/when_exe/locales/en_US.rb +87 -0
- data/lib/when_exe/locales/es_CR.rb +84 -0
- data/lib/when_exe/locales/es_EC.rb +85 -0
- data/lib/when_exe/locales/es_PA.rb +85 -0
- data/lib/when_exe/locales/fr.rb +39 -39
- data/lib/when_exe/locales/hu.rb +15 -14
- data/lib/when_exe/locales/it.rb +1 -1
- data/lib/when_exe/locales/ja.rb +2 -2
- data/lib/when_exe/locales/locales.rb +7 -0
- data/lib/when_exe/locales/lt.rb +21 -19
- data/lib/when_exe/locales/ms.rb +84 -0
- data/lib/when_exe/locales/nl.rb +2 -2
- data/lib/when_exe/locales/ru.rb +1 -1
- data/lib/when_exe/locales/uk.rb +1 -1
- data/lib/when_exe/locales/ur.rb +84 -0
- data/lib/when_exe/mini_application.rb +44 -43
- data/lib/when_exe/parts/enumerator.rb +3 -3
- data/lib/when_exe/parts/geometric_complex.rb +6 -1
- data/lib/when_exe/parts/locale.rb +49 -18
- data/lib/when_exe/parts/method_cash.rb +61 -0
- data/lib/when_exe/parts/resource.rb +221 -106
- data/lib/when_exe/parts/timezone.rb +70 -33
- data/lib/when_exe/region/bahai.rb +2 -2
- data/lib/when_exe/region/balinese.rb +40 -43
- data/lib/when_exe/region/chinese.rb +93 -33
- data/lib/when_exe/region/chinese_calendar.rb +117 -1
- data/lib/when_exe/region/chinese_epoch.rb +65 -10
- data/lib/when_exe/region/christian.rb +97 -2
- data/lib/when_exe/region/ephemeric_notes.rb +353 -0
- data/lib/when_exe/region/french.rb +1 -1
- data/lib/when_exe/region/geologicalage.rb +171 -171
- data/lib/when_exe/region/indian.rb +18 -14
- data/lib/when_exe/region/iranian.rb +1 -1
- data/lib/when_exe/region/japanese.rb +49 -12
- data/lib/when_exe/region/japanese_notes.rb +838 -507
- data/lib/when_exe/region/japanese_residues.rb +724 -662
- data/lib/when_exe/region/javanese.rb +7 -7
- data/lib/when_exe/region/mayan.rb +19 -17
- data/lib/when_exe/region/nihon_shoki.rb +3 -3
- data/lib/when_exe/region/residue.rb +29 -28
- data/lib/when_exe/region/shire.rb +2 -2
- data/lib/when_exe/region/tibetan.rb +87 -5
- data/lib/when_exe/region/world.rb +1 -1
- data/lib/when_exe/timestandard.rb +85 -7
- data/lib/when_exe/tmobjects.rb +32 -4
- data/lib/when_exe/tmposition.rb +104 -55
- data/lib/when_exe/tmreference.rb +157 -60
- data/lib/when_exe/version.rb +2 -2
- data/test/examples/JapanHolidays.ics +3 -3
- data/test/examples/JapanHolidaysRFC6350.ics +499 -0
- data/test/examples/Residue.m17n +3 -2
- data/test/examples/Spatial.m17n +3 -3
- data/test/examples/USA-DST.ics +27 -27
- data/test/examples/today.rb +1 -1
- data/test/test.rb +4 -2
- data/test/test/basictypes.rb +40 -15
- data/test/test/coordinates.rb +9 -4
- data/test/test/icalendar.rb +24 -14
- data/test/test/inspect.rb +5 -3
- data/test/test/parts.rb +11 -2
- data/test/test/region/chinese.rb +4 -4
- data/test/test/region/civil.rb +124 -0
- data/test/test/region/geologicalage.rb +5 -2
- data/test/test/region/indian.rb +2 -0
- data/test/test/region/japanese.rb +156 -1
- data/test/test/region/jewish.rb +3 -3
- data/test/test/region/m17n.rb +9 -9
- data/test/test/region/mayan.rb +122 -5
- data/test/test/region/residue.rb +1 -1
- data/test/test/tmobjects.rb +27 -64
- data/test/test/tmposition.rb +48 -1
- data/test/test/tmreference.rb +66 -4
- data/when_exe.gemspec +1 -1
- metadata +15 -6
|
@@ -448,7 +448,7 @@ module When
|
|
|
448
448
|
#
|
|
449
449
|
# @return [Integer, When::TM::DateAndTime] 日の出の日時
|
|
450
450
|
#
|
|
451
|
-
def
|
|
451
|
+
def sunrise(sdn, height=nil)
|
|
452
452
|
t = sdn.to_i - @long / 360.0 - 0.25
|
|
453
453
|
p = _mean_sun(t) + P * (t - Ep) / @civil_days
|
|
454
454
|
_to_seed_type(t - asin(tand(@lat)*tan(asin(sinc(p)*sinc(Ob)))) / CIRCLE, sdn)
|
|
@@ -462,7 +462,7 @@ module When
|
|
|
462
462
|
#
|
|
463
463
|
# @return [Integer, When::TM::DateAndTime] 日の入りの日時
|
|
464
464
|
#
|
|
465
|
-
def
|
|
465
|
+
def sunset(sdn, height=nil)
|
|
466
466
|
t = sdn.to_i - @long / 360.0 + 0.25
|
|
467
467
|
p = _mean_sun(t) + P * (t - Ep) / @civil_days
|
|
468
468
|
_to_seed_type(t + asin(tand(@lat)*tan(asin(sinc(p)*sinc(Ob)))) / CIRCLE, sdn)
|
|
@@ -525,7 +525,7 @@ module When
|
|
|
525
525
|
|
|
526
526
|
class TM::CalendarEra
|
|
527
527
|
|
|
528
|
-
|
|
528
|
+
IndianNationalSolar = [self, [
|
|
529
529
|
"namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
|
|
530
530
|
"locale:[=en:, ja=ja:, alias]",
|
|
531
531
|
"area:[IndianNationalSolar=en:Indian_national_calendar, インド国定暦]",
|
|
@@ -570,8 +570,8 @@ module When
|
|
|
570
570
|
def _new_month_(m)
|
|
571
571
|
new_month_time = @formula[0].cn_to_time(m + @cycle_offset)
|
|
572
572
|
new_month_date = (new_month_time + 0.5 + @formula[0].long/360.0).floor
|
|
573
|
-
|
|
574
|
-
(
|
|
573
|
+
sunrise_time = @formula[0].sunrise(new_month_date)
|
|
574
|
+
(sunrise_time <= new_month_time) ? new_month_date : new_month_date-1
|
|
575
575
|
end
|
|
576
576
|
|
|
577
577
|
private
|
|
@@ -597,7 +597,7 @@ module When
|
|
|
597
597
|
formula = @formula || HinduLuniSolar::Formula[$1]
|
|
598
598
|
if formula.kind_of?(String)
|
|
599
599
|
formula += (formula =~ /\?/) ? '&' : '?'
|
|
600
|
-
@formula = [When.Resource("_ep:#{formula}location
|
|
600
|
+
@formula = [When.Resource("_ep:#{formula}location=(#{@location})&formula=12S")]
|
|
601
601
|
end
|
|
602
602
|
@indices ||= [
|
|
603
603
|
Coordinates::Index.new({:trunk=>When.Resource('_m:IndianTerms::SolarMonth::*'),
|
|
@@ -640,8 +640,8 @@ module When
|
|
|
640
640
|
def _new_month_(m)
|
|
641
641
|
new_moon_time = @formula[-1].cn_to_time(m)
|
|
642
642
|
new_moon_date = (new_moon_time + 0.5 + @formula[-1].long/360.0).floor
|
|
643
|
-
|
|
644
|
-
(
|
|
643
|
+
sunrise_time = @formula[-1].sunrise(new_moon_date)
|
|
644
|
+
(sunrise_time >= new_moon_time) ? new_moon_date : new_moon_date+1
|
|
645
645
|
end
|
|
646
646
|
|
|
647
647
|
# 年初の通月
|
|
@@ -745,7 +745,7 @@ module When
|
|
|
745
745
|
formula += (formula =~ /\?/) ? '&' : '?'
|
|
746
746
|
@formula = When.Resource(["_ep:#{formula}formula=12S",
|
|
747
747
|
"_ep:#{formula}formula=30L->12S",
|
|
748
|
-
"_ep:#{formula}location
|
|
748
|
+
"_ep:#{formula}location=(#{@location})&formula=2L"])
|
|
749
749
|
end
|
|
750
750
|
intercalary_month = When.Resource('_m:IndianTerms::IntercalaryMonth::*')
|
|
751
751
|
intercalary_day = When.Resource('_m:IndianTerms::IntercalaryDay::*')
|
|
@@ -942,17 +942,21 @@ module When
|
|
|
942
942
|
@o_date = date
|
|
943
943
|
clock = date.clock
|
|
944
944
|
frame = date.frame if date.frame.kind_of?(When::CalendarTypes::HinduLuniSolar)
|
|
945
|
-
@l_date = (
|
|
946
|
-
(frame || When.Calendar('HinduLuniSolar?note=HinduNote')).jul_trans(date, {:clock=>clock||'+05:30'})
|
|
945
|
+
@l_date = (frame || When.Calendar('HinduLuniSolar?note=HinduNote')).jul_trans(date.to_i, {:clock=>'+05:30'})
|
|
947
946
|
@root = When.CalendarNote('HinduNote/NoteObjects')['day']
|
|
948
947
|
@formula = @l_date.frame.formula[-1]
|
|
949
|
-
@iri = @formula.iri
|
|
950
|
-
@rises = [@formula.
|
|
948
|
+
@iri = @formula.iri
|
|
949
|
+
@rises = [@formula.sunrise(@l_date), @formula.sunrise(@l_date+When.Duration('P1D'))]
|
|
951
950
|
end
|
|
952
951
|
|
|
953
952
|
# その他のメソッドは @l_date に移譲する
|
|
954
953
|
def method_missing(name, *args, &block)
|
|
955
|
-
|
|
954
|
+
self.class.module_eval %Q{
|
|
955
|
+
def #{name}(*args, &block)
|
|
956
|
+
@l_date.send("#{name}", *args, &block)
|
|
957
|
+
end
|
|
958
|
+
} unless When::Parts::MethodCash.escape(name)
|
|
959
|
+
@l_date.send(name, *args, &block)
|
|
956
960
|
end
|
|
957
961
|
end
|
|
958
962
|
|
|
@@ -56,7 +56,7 @@ module When
|
|
|
56
56
|
'origin_of_MSC' => -621,
|
|
57
57
|
'epoch_in_CE' => 0,
|
|
58
58
|
'cycle_offset' => 0,
|
|
59
|
-
'
|
|
59
|
+
'time_basis' => '+15:30',
|
|
60
60
|
'rule_table' => {
|
|
61
61
|
365 => {'Length'=>[31] * 6 + [30] * 5 + [29]},
|
|
62
62
|
366 => {'Length'=>[31] * 6 + [30] * 6}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
=begin
|
|
3
|
-
Copyright (C) 2011-
|
|
3
|
+
Copyright (C) 2011-2014 Takashi SUGA
|
|
4
4
|
|
|
5
5
|
You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
|
|
6
6
|
=end
|
|
@@ -427,8 +427,45 @@ module When
|
|
|
427
427
|
aBCdEfGhIjkL AbCDeFgHhIjKl aBCdEfGHiJkL abCdEfGHIjKl AbcDeEfGHiJKl
|
|
428
428
|
AbCdefGHiJKL aBcDefgHiJKL aBCddEfgHiJKl ABCdeFghIjKL aBCdEfGhIjjKl
|
|
429
429
|
ABcDEfGhIjkL aBcDEfGHiJkL )
|
|
430
|
-
|
|
431
|
-
|
|
430
|
+
}
|
|
431
|
+
]
|
|
432
|
+
|
|
433
|
+
#
|
|
434
|
+
# 『唐・日本における進朔に関する研究』(2013-10版)を使用する場合の朔閏表
|
|
435
|
+
#
|
|
436
|
+
Japanese0764 = [PatternTableBasedLuniSolar, {
|
|
437
|
+
'origin_of_MSC'=>764, 'origin_of_LSC'=>2000146,
|
|
438
|
+
'indices'=> [
|
|
439
|
+
Coordinates::Index.new({:branch=>{1=>When.Resource('_m:CalendarTerms::閏')},
|
|
440
|
+
:trunk=>When.Resource('_m:JapaneseTerms::Month::*')}),
|
|
441
|
+
Coordinates::DefaultDayIndex
|
|
442
|
+
],
|
|
443
|
+
'note' => 'JapaneseNote',
|
|
444
|
+
'rule_table'=> %w( aBCdEfGhiJkL aBCdEFgHiJjkL
|
|
445
|
+
aBCdEfGHiJkL abCdEfGHiJKl AbcDeFfGHiJKl AbCdeFghIJKL aBcdEfgHiJKL
|
|
446
|
+
aBCcDefgHiJKl ABCdeFgHijKL aBcDEfGhIjkKL aBcDEfGhIjkL AbcDEfGHiJkL
|
|
447
|
+
aBcdEfGHhIJkL aBcdEfgHIJkL AbCDefghIJKl ABcDeefGhIJKL aBcDefgHiJKL
|
|
448
|
+
aBcDeFgHijKl AAbCDeFghIjKl ABcDeFGhIjkL aBcDeFGhIiJKl aBcDeFgHIJkL
|
|
449
|
+
aBcdEfgHIjKL AbCdeeFgHiJKL aBCdefGhIjKL AbCdEfgHiJkL ABcCdEfGhiJkL
|
|
450
|
+
AbCDeFgHijKl ABcDeFgHIjKkl AbCdEfGHiJkL aBcdEfGHiJKL abCdeFgGHiJKL
|
|
451
|
+
abCdeFgHiJKL aBcDefGhIjKL AbCdEefGhiJKL aBCdEfgHiJkL aBCdEfGhIjKl
|
|
452
|
+
|
|
453
|
+
AaBcDeFGhIjKl AbcDEfGHiJkL aBcdEfGHiJJkL aBcdEfGhIJKl AbCdeFghIJKL
|
|
454
|
+
aBcDefFghIJKL aBcDefGhIjKl ABcDEfgHijKL aBbCDeFgHiJkL aBcDeFGhIJkl
|
|
455
|
+
AbcDeFGhIJkLl AbcDeFgHIJkL aBcdEfGhIJKl AbCdeFggHIjKL AbCdeFghIjKL
|
|
456
|
+
ABcDefGhiJKl AbCDdEfGhIjkL AbCDeFgHiJkL aBcDeFgHIjKl AabCdEFgHIjKl
|
|
457
|
+
AbcDeFgHIjKL aBcdEfgHIiJKL aBcdEfgHIjKL aBCdeFghIjKL AbCdEfGghIjKl
|
|
458
|
+
ABCdEfGhiJkL aBCdEfGHiJkL AbccDEfGHiJkL abCdEfGHiJKl AbcDEfgHiJKLl
|
|
459
|
+
AbcDefGHiJKL AbcdEfgHiJKL aBCdeFggHiJKl ABcDeFghIjKL aBCdEfGhiJkL
|
|
460
|
+
aBCdEeFGhIjkL aBcDeFGhIJkL abCdEfGHiJKl AabCdeFGhIJKl AbcDefGhIJKl
|
|
461
|
+
ABcdEfgHiIJkL ABcdEfgHiJKl ABcDeFghIjKl ABcDEfGgHijKl AbCDeFgHIjKl
|
|
462
|
+
aBcDeFGhIJkL abCcDeFgHIJkL abCdeFgHIJkL AbcDefGhIJkLL AbcDefGhIjKL
|
|
463
|
+
|
|
464
|
+
AbCdEfgHiJkL AbCDeFghHiJkL AbCdEFghIjKl AbCdEFgHiJKL abcDdEfGHiJKl
|
|
465
|
+
aBcdEfGHIjKL abCdeFgHIjKL AbbCdeFgHiJKL aBcDefGhIjKL AbCdEfgHiJJkL
|
|
466
|
+
aBCdEfgHiJkL)
|
|
467
|
+
}
|
|
468
|
+
]
|
|
432
469
|
end
|
|
433
470
|
|
|
434
471
|
class TM::CalendarEra
|
|
@@ -436,10 +473,10 @@ module When
|
|
|
436
473
|
#
|
|
437
474
|
# 日本の年号
|
|
438
475
|
#
|
|
439
|
-
Japanese = [self, [
|
|
476
|
+
Japanese = [{}, self, [
|
|
440
477
|
"namespace:[ja=http://ja.wikipedia.org/wiki/, en=http://en.wikipedia.org/wiki/]",
|
|
441
478
|
"locale:[=ja:, en=en:, alias]",
|
|
442
|
-
|
|
479
|
+
'area:[日本#{?V=V}=ja:%%<元号>#%.<日本>,Japan#{?V=V}=en:Regnal_year#Japanese]',
|
|
443
480
|
[self,
|
|
444
481
|
"period:[飛鳥時代]",
|
|
445
482
|
["[推古]1", "@A", "name=[推古];0593-01-01^Japanese"],
|
|
@@ -468,7 +505,7 @@ module When
|
|
|
468
505
|
["[天平感宝]1", "@FE", " 0749-04-14"],
|
|
469
506
|
["[天平勝宝]1", "@A", "name=[孝謙];0749-07-02"],
|
|
470
507
|
["[天平宝字]1", "@FE", " 0757-08-18",
|
|
471
|
-
"name=[淳仁];0758-08-01", ""],
|
|
508
|
+
"name=[淳仁];0758-08-01", '0764-01-01^Japanese#{V}', ""],
|
|
472
509
|
["[天平神護]1", "@A", "name=[称徳];0765-01-07"],
|
|
473
510
|
["[神護景雲]1", "@FE", " 0767-08-16"],
|
|
474
511
|
["[宝亀]1", "[代始・祥瑞]", "name=[光仁];0770-10-01"],
|
|
@@ -477,7 +514,7 @@ module When
|
|
|
477
514
|
],
|
|
478
515
|
[self,
|
|
479
516
|
"period:[平安時代]",
|
|
480
|
-
["[延暦]13", "",
|
|
517
|
+
["[延暦]13", "", 'name=[桓武];0794-10-22^Japanese#{V}'],
|
|
481
518
|
["[大同]1", "@A", "name=[平城];0806-05-18"],
|
|
482
519
|
["[弘仁]1", "@A", "name=[嵯峨];0810-09-19"],
|
|
483
520
|
["[天長]1", "@A", "name=[淳和];0824-01-05"],
|
|
@@ -486,7 +523,7 @@ module When
|
|
|
486
523
|
["[仁寿]1", "[代始・祥瑞]", "name=[文徳];0851-04-28"],
|
|
487
524
|
["[斉衡]1", "@FE", " 0854-11-30"],
|
|
488
525
|
["[天安]1", "@FE", " 0857-02-21"],
|
|
489
|
-
["[貞観]1", "@A", "name=[清和];0859-04-15"],
|
|
526
|
+
["[貞観]1", "@A", "name=[清和];0859-04-15", "0862-01-01^Japanese", ""],
|
|
490
527
|
["[元慶]1", "[代始・祥瑞]", "name=[陽成];0877-04-16"],
|
|
491
528
|
["[仁和]1", "@A", "name=[光孝];0885-02-21"],
|
|
492
529
|
["[寛平]1", "@A", "name=[宇多];0889-04-27"],
|
|
@@ -497,8 +534,8 @@ module When
|
|
|
497
534
|
["[天慶]1", "@ND", " 0938-05-22"],
|
|
498
535
|
["[天暦]1", "@A", "name=[村上];0947-04-22"],
|
|
499
536
|
["[天徳]1", "@ND", " 0957-10-27"],
|
|
500
|
-
["[応和]1", "[災異・革年]", "
|
|
501
|
-
["[康保]1", "[災異・革年]", "
|
|
537
|
+
["[応和]1", "[災異・革年]", " 0961-02-16"],
|
|
538
|
+
["[康保]1", "[災異・革年]", " 0964-07-10"],
|
|
502
539
|
["[安和]1", "@A", "name=[冷泉];0968-08-13"],
|
|
503
540
|
["[天禄]1", "@A", "name=[円融];0970-03-25"],
|
|
504
541
|
["[天延]1", "@ND", " 0973-12-20"],
|
|
@@ -647,7 +684,7 @@ module When
|
|
|
647
684
|
],
|
|
648
685
|
[self,
|
|
649
686
|
"period:[持明院統]",
|
|
650
|
-
["[元徳]3", "", "name=;1331-08-09^Japanese",
|
|
687
|
+
["[元徳]3", "", " name=;1331-08-09^Japanese",
|
|
651
688
|
"name=[光厳];1331-09-20", ""],
|
|
652
689
|
["[正慶]1", "@A", " 1332-04-28", "1333-05-18"]
|
|
653
690
|
],
|
|
@@ -714,7 +751,7 @@ module When
|
|
|
714
751
|
"period:[江戸時代]",
|
|
715
752
|
["[慶長]8", "", "name=[後陽成];1603-02-12^Japanese",
|
|
716
753
|
"name=[後水尾];1611-03-27", ""],
|
|
717
|
-
["[元和]1", "[代始・災異]","
|
|
754
|
+
["[元和]1", "[代始・災異]"," 1615-07-13"],
|
|
718
755
|
["[寛永]1", "@IY", " 1624-02-30",
|
|
719
756
|
"name=[明正];1629-11-08", ""],
|
|
720
757
|
["[正保]1", "@A", "name=[後光明];1644-12-16"],
|
|
@@ -1,12 +1,67 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
=begin
|
|
3
|
-
Copyright (C) 2012-
|
|
3
|
+
Copyright (C) 2012-2014 Takashi SUGA
|
|
4
4
|
|
|
5
5
|
You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
|
|
6
6
|
=end
|
|
7
7
|
|
|
8
|
+
require 'when_exe/region/ephemeric_notes'
|
|
8
9
|
require 'when_exe/region/japanese_residues'
|
|
9
10
|
|
|
11
|
+
|
|
12
|
+
class When::TM::CalendarEra
|
|
13
|
+
|
|
14
|
+
kyoto = '?time_basis=(LAT?long=135.4520E&lat=35.0117N)'
|
|
15
|
+
tokyo = '?time_basis=+09:18:59'
|
|
16
|
+
jst = '?time_basis=+09:00&intercalary_span=3'
|
|
17
|
+
|
|
18
|
+
# Japanese Luni-Solar Calendar Series for JapaneseNote
|
|
19
|
+
JapaneseLuniSolarSeries = [self, [
|
|
20
|
+
'namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]',
|
|
21
|
+
'locale:[=en:, ja=ja:, alias]',
|
|
22
|
+
'area:[JapaneseLuniSolarSeries=, 日本の暦月=]',
|
|
23
|
+
['[平朔儀鳳暦=]-660.01.01', '@F', "-660-01-01^Chinese::平朔儀鳳暦"],
|
|
24
|
+
['[元嘉暦]454.01.01', '@CR', "454-01-01^Chinese::元嘉暦"],
|
|
25
|
+
['[儀鳳暦]697.01.01', '@CR', "697-01-01^Chinese::麟徳暦"],
|
|
26
|
+
['[大衍暦]764.01.01', '@CR', "764-01-01^Chinese::大衍暦"],
|
|
27
|
+
['[五紀暦]858.01.01', '@CR', "858-01-01^Chinese::五紀暦"],
|
|
28
|
+
['[宣明暦]862.01.01', '@CR', "862-01-01^Chinese::宣明暦"],
|
|
29
|
+
['[前貞享暦=]1685.01.01', '@CR', "1685-01-01^ChineseLuniSolar#{kyoto}"],
|
|
30
|
+
['[貞享暦]1687.01.01', '@CR', "1687-01-01^ChineseLuniSolar#{kyoto}"],
|
|
31
|
+
['[貞享補暦A=]1753.01.01', '@CR', "1753-01-01^ChineseLuniSolar#{kyoto}"],
|
|
32
|
+
['[貞享補暦B=]1754.01.01', '@CR', "1754-01-01^ChineseLuniSolar#{kyoto}"],
|
|
33
|
+
['[宝暦暦]1755.01.01', '@CR', "1755-01-01^ChineseLuniSolar#{kyoto}"],
|
|
34
|
+
['[修正宝暦暦=]1771.01.01', '@CR', "1771-01-01^ChineseLuniSolar#{kyoto}"],
|
|
35
|
+
['[寛政暦]1798.01.01', '@CR', "1798-01-01^ChineseLuniSolar#{kyoto}"],
|
|
36
|
+
['[天保暦]1844.01.01', '@CR', "1844-01-01^ChineseLuniSolar#{kyoto}"], # 京都平均太陽時
|
|
37
|
+
['[JLSA=,旧暦A=]1872.12.03','@CR', "1872-12-03^ChineseLuniSolar#{tokyo}"], # 東京平均太陽時
|
|
38
|
+
['[JLSB=,旧暦B=]1887.11.18','@CR', "1887-11-18^ChineseLuniSolar#{jst}"] # 日本標準時
|
|
39
|
+
]]
|
|
40
|
+
|
|
41
|
+
# Japanese Solar Calendar Series for JapaneseNote
|
|
42
|
+
JapaneseSolarSeries = [self, [
|
|
43
|
+
'namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]',
|
|
44
|
+
'locale:[=en:, ja=ja:, alias]',
|
|
45
|
+
'area:[JapaneseSolarSeries=, 日本の節月=]',
|
|
46
|
+
['[平朔儀鳳暦=]-661.01.01', '@F', "-661-01-01^Chinese::平朔儀鳳暦(節月)"], # 年の始めに遡って開始(実際は12.22)
|
|
47
|
+
['[元嘉暦]454.01.12', '@CR', "454-01-12^Chinese::元嘉暦(節月)"],
|
|
48
|
+
['[儀鳳暦]696.12.27', '@CR', "696-12-27^Chinese::麟徳暦(節月)"],
|
|
49
|
+
['[大衍暦]764.01.06', '@CR', "764-01-06^Chinese::大衍暦(節月)"],
|
|
50
|
+
['[五紀暦]857.12.19', '@CR', "857-12-19^Chinese::五紀暦(節月)"],
|
|
51
|
+
['[宣明暦]862.01.03', '@CR', "862-01-03^Chinese::宣明暦(節月)"],
|
|
52
|
+
['[前貞享暦=]1685.01.01', '@CR', "1685-01-01^Chinese::前貞享暦(節月)"],
|
|
53
|
+
['[貞享暦]1687.01.08', '@CR', "1687-01-08^Chinese::貞享暦(節月)"],
|
|
54
|
+
['[貞享補暦A=]1752.12.30', '@CR', "1752-12-30^Chinese::貞享補暦A(節月)"],
|
|
55
|
+
['[貞享補暦B=]1753.12.19', '@CR', "1753-12-19^Chinese::貞享補暦B(節月)"],
|
|
56
|
+
['[宝暦暦]1755.01.07', '@CR', "1755-01-07^Chinese::宝暦暦(節月)"],
|
|
57
|
+
['[修正宝暦暦=]1771.01.11', '@CR', "1771-01-11^Chinese::修正宝暦暦(節月)"],
|
|
58
|
+
['[寛政暦]1798.01.12', '@CR', "1798-01-12^Chinese::寛政暦(節月)"],
|
|
59
|
+
['[天保暦]1844.01.14', '@CR', "1844-01-14^ChineseSolar#{kyoto}"], # 京都平均太陽時
|
|
60
|
+
['[JSA=,旧暦A=]1872.11.26', '@CR', "1872-11-26^ChineseSolar#{tokyo}"], # 東京平均太陽時
|
|
61
|
+
['[JSB=,旧暦B=]1887.11.26', '@CR', "1887-11-26^ChineseSolar#{jst}"] # 日本標準時
|
|
62
|
+
]]
|
|
63
|
+
end
|
|
64
|
+
|
|
10
65
|
class When::CalendarTypes::CalendarNote
|
|
11
66
|
|
|
12
67
|
#
|
|
@@ -14,31 +69,27 @@ class When::CalendarTypes::CalendarNote
|
|
|
14
69
|
#
|
|
15
70
|
class JapaneseNote < self
|
|
16
71
|
|
|
72
|
+
#
|
|
73
|
+
# 日本暦注が使用する暦法
|
|
74
|
+
#
|
|
75
|
+
# @private
|
|
76
|
+
class Cal4Note
|
|
77
|
+
def initialize(calendar, solar)
|
|
78
|
+
@calendar = calendar
|
|
79
|
+
@solar = solar
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
17
83
|
#
|
|
18
84
|
# 日本暦注の要素
|
|
19
85
|
#
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
# 開始年 暦法 土用のオフセット
|
|
24
|
-
[-660, '儀鳳暦' ],
|
|
25
|
-
[ 454, '元嘉暦' ],
|
|
26
|
-
[ 697, '麟徳暦', (Rational( 4,15) + 244) / 1340 ], # 啓蟄 <-> 雨水
|
|
27
|
-
[ 764, '大衍暦', (Rational(13,30) + 531) / 3040 ],
|
|
28
|
-
[ 858, '五紀暦', (Rational( 4,15) + 244) / 1340 ],
|
|
29
|
-
[ 862, '宣明暦', (Rational( 1, 2) + 1468) / 8400 ],
|
|
30
|
-
[1685, ['timezone=32584.4/3600', '前貞享暦(節月)' ]],
|
|
31
|
-
[1687, ['timezone=32584.4/3600', '貞享暦(節月)' ]],
|
|
32
|
-
[1753, ['timezone=32584.4/3600', '前々宝暦暦(節月)']],
|
|
33
|
-
[1754, ['timezone=32584.4/3600', '前宝暦暦(節月)' ]],
|
|
34
|
-
[1755, ['timezone=32584.4/3600', '宝暦暦(節月)' ]],
|
|
35
|
-
[1771, ['timezone=32584.4/3600', '修正宝暦暦(節月)']],
|
|
36
|
-
[1798, ['timezone=32584.4/3600', '寛政暦(節月)' ]],
|
|
37
|
-
[1844, 'timezone=32584.4/3600'], # 京都平均太陽時の定朔定気法太陰太陽暦(天保暦の代用)
|
|
38
|
-
[1873, 'timezone=33539/3600' ], # 東京平均太陽時の定朔定気法太陰太陽暦
|
|
39
|
-
[1888, 'timezone=9'] # 日本標準時の定朔定気法太陰太陽暦
|
|
40
|
-
].reverse
|
|
86
|
+
# @private
|
|
87
|
+
class Note < When::CalendarTypes::CalendarNote::NoteElement
|
|
88
|
+
end
|
|
41
89
|
|
|
90
|
+
#
|
|
91
|
+
# 日本暦注の要素
|
|
92
|
+
#
|
|
42
93
|
NoteObjects = [When::BasicTypes::M17n, [
|
|
43
94
|
"namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
|
|
44
95
|
"locale:[=ja:]",
|
|
@@ -47,221 +98,329 @@ class When::CalendarTypes::CalendarNote
|
|
|
47
98
|
# 年の暦注 ----------------------------
|
|
48
99
|
[When::BasicTypes::M17n,
|
|
49
100
|
"names:[年]",
|
|
50
|
-
[
|
|
51
|
-
# [
|
|
52
|
-
#
|
|
53
|
-
# [
|
|
54
|
-
#
|
|
55
|
-
[
|
|
56
|
-
|
|
57
|
-
[
|
|
58
|
-
[
|
|
59
|
-
|
|
60
|
-
[
|
|
61
|
-
|
|
62
|
-
[
|
|
63
|
-
|
|
64
|
-
[
|
|
65
|
-
|
|
66
|
-
[
|
|
67
|
-
|
|
68
|
-
[
|
|
69
|
-
|
|
70
|
-
[
|
|
71
|
-
|
|
72
|
-
[
|
|
73
|
-
|
|
74
|
-
[
|
|
75
|
-
|
|
76
|
-
[
|
|
77
|
-
|
|
101
|
+
[Note, 0xFFFF, "label:[干支]", 'position:共通'], # 0: 干支
|
|
102
|
+
# [Note, 0xFFFF, "label:[干=ja:%%<十干>]",
|
|
103
|
+
# 'position:共通'], # 干
|
|
104
|
+
# [Note, 0xFFFF, "label:[支=ja:%%<十二支>]",
|
|
105
|
+
# 'position:共通'], # 支
|
|
106
|
+
[Note, 0x3800, "label:[廿八宿=ja:%%<二十八宿>]",
|
|
107
|
+
'position:共通'], # 1: 廿八宿
|
|
108
|
+
[Note, 0x3FFC, "label:[大歳壇=]", 'position:暦序'], # 2: 干支
|
|
109
|
+
[Note, 0xC000, "label:[九星]", 'position:民間'], # 3: 九星
|
|
110
|
+
[Note, 0xFFFC, "label:[納音]", 'position:暦序', 'suffix:是'], # 4: 干支
|
|
111
|
+
[Note, 0xFFFF, "label:[大歳=ja:%%<太歳神>]",
|
|
112
|
+
'position:暦序', 'suffix:在'], # 5: 干支
|
|
113
|
+
[Note, 0xFFFF, "label:[大將軍=ja:%%<大将軍_(方位神)>]",
|
|
114
|
+
'position:暦序', 'suffix:在'], # 6: 支
|
|
115
|
+
[Note, 0xFFFF, "label:[大陰=ja:%%<太陰神>]",
|
|
116
|
+
'position:暦序', 'suffix:在'], # 7: 支
|
|
117
|
+
[Note, 0xFFFF, "label:[歳徳=ja:%%<歳徳神>]",
|
|
118
|
+
'position:暦序', 'suffix:在'], # 8: 干
|
|
119
|
+
[Note, 0xFFFF, "label:[歳刑=ja:%%<歳刑神>]",
|
|
120
|
+
'position:暦序', 'suffix:在'], # 9: 支
|
|
121
|
+
[Note, 0xFFFF, "label:[歳破=ja:%%<歳破神>]",
|
|
122
|
+
'position:暦序', 'suffix:在'], # 10: 支
|
|
123
|
+
[Note, 0xFFFF, "label:[歳煞=ja:%%<歳煞神>]",
|
|
124
|
+
'position:暦序', 'suffix:在'], # 11: 支
|
|
125
|
+
[Note, 0xFFFF, "label:[黄幡=ja:%%<黄幡神>]",
|
|
126
|
+
'position:暦序', 'suffix:在'], # 12: 支
|
|
127
|
+
[Note, 0xFFFF, "label:[豹尾=ja:%%<豹尾神>]",
|
|
128
|
+
'position:暦序', 'suffix:在'], # 13: 支
|
|
129
|
+
[Note, 0x0003, "label:[天道=]", 'position:暦序', 'suffix:-'], # 14: 支
|
|
130
|
+
[Note, 0x0003, "label:[人道=]", 'position:暦序', 'suffix:-'], # 15: 支
|
|
131
|
+
[Note, 0x3FFC, "label:[歳次=]", 'position:暦序', 'suffix:-'], # 16: 支
|
|
132
|
+
[Note, 0xF800, "label:[金神]", 'position:仮名暦', 'suffix:在'], # 17: 干
|
|
133
|
+
[Note, 0xFFFF, "label:[大小]", 'position:暦序'] # 18: 朔閏表
|
|
78
134
|
],
|
|
79
135
|
|
|
80
136
|
# 月の暦注 ----------------------------
|
|
81
137
|
[When::BasicTypes::M17n,
|
|
82
138
|
"names:[月]",
|
|
83
|
-
[
|
|
84
|
-
|
|
85
|
-
# [
|
|
86
|
-
# [
|
|
87
|
-
#
|
|
88
|
-
# [
|
|
89
|
-
#
|
|
90
|
-
[
|
|
91
|
-
|
|
92
|
-
[
|
|
93
|
-
[
|
|
94
|
-
[
|
|
95
|
-
[
|
|
96
|
-
[
|
|
97
|
-
[
|
|
98
|
-
[
|
|
99
|
-
[
|
|
100
|
-
[
|
|
101
|
-
[
|
|
102
|
-
|
|
139
|
+
[Note, 0xFFFF, "label:[月名=ja:%%<月_(暦)>#%.<日本の和風月名>]",
|
|
140
|
+
'position:月建'], # 0: 月の和名
|
|
141
|
+
# [Note, 0xFFFF, "label:[干支]", 'position:共通'], # 干支
|
|
142
|
+
# [Note, 0xFFFF, "label:[干=ja:%%<十干>]",
|
|
143
|
+
# 'position:共通'], # 干
|
|
144
|
+
# [Note, 0xFFFF, "label:[支=ja:%%<十二支>]",
|
|
145
|
+
# 'position:共通'], # 支
|
|
146
|
+
[Note, 0xF800, "label:[廿八宿=ja:%%<二十八宿>]",
|
|
147
|
+
'position:共通'], # 1: 廿八宿
|
|
148
|
+
[Note, 0xFFFC, "label:[月建=]", 'position:月建', 'suffix:-' ], # 2: 年の十干と暦月
|
|
149
|
+
[Note, 0xC000, "label:[九星]", 'position:民間'], # 3: 九星
|
|
150
|
+
[Note, 0x0003, "label:[天氣=]", 'position:月建', 'suffix:-' ], # 4: 暦月
|
|
151
|
+
[Note, 0x3FFF, "label:[天道=]", 'position:月建', 'suffix:-' ], # 5: 暦月
|
|
152
|
+
[Note, 0x0003, "label:[人道=]", 'position:月建', 'suffix:-' ], # 6: 暦月
|
|
153
|
+
[Note, 0x0003, "label:[月破=]", 'position:月建', 'suffix:在'], # 7: 暦月
|
|
154
|
+
[Note, 0x3FFC, "label:[天徳=]", 'position:月建', 'suffix:在'], # 8: 暦月
|
|
155
|
+
[Note, 0x3FFF, "label:[月煞=]", 'position:月建', 'suffix:在'], # 9: 暦月
|
|
156
|
+
[Note, 0x3FFF, "label:[用時=]", 'position:月建', 'suffix:-' ], # 10: 暦月
|
|
157
|
+
[Note, 0x3FFF, "label:[月徳=]", 'position:月建', 'suffix:在'], # 11: 暦月
|
|
158
|
+
[Note, 0x3FFC, "label:[月徳合=]", 'position:月建', 'suffix:在'], # 12: 暦月
|
|
159
|
+
[Note, 0x3FFC, "label:[月空=]", 'position:月建', 'suffix:在'], # 13: 暦月
|
|
160
|
+
[Note, 0x3FFF, "label:[三鏡=]", 'position:月建', 'suffix:-' ], # 14: 暦月
|
|
161
|
+
[Note, 0x3FFF, "label:[土府=]", 'position:月建', 'suffix:在'], # 15: 暦月
|
|
162
|
+
[Note, 0x3FFC, "label:[土公=ja:%%<土公神>]",
|
|
163
|
+
'position:月建', 'suffix:在'], # 16: 暦月
|
|
164
|
+
[Note, 0xFFFF, "label:[大小]", 'position:月建'] # 17: 朔閏表
|
|
103
165
|
],
|
|
104
166
|
|
|
105
167
|
# 日の暦注 ----------------------------
|
|
106
168
|
[When::BasicTypes::M17n,
|
|
107
169
|
"names:[日]",
|
|
108
|
-
[
|
|
109
|
-
# [
|
|
110
|
-
#
|
|
111
|
-
# [
|
|
112
|
-
#
|
|
113
|
-
[
|
|
114
|
-
[
|
|
115
|
-
[
|
|
116
|
-
[
|
|
117
|
-
|
|
118
|
-
[
|
|
119
|
-
|
|
120
|
-
[
|
|
121
|
-
[
|
|
122
|
-
[
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
[
|
|
126
|
-
|
|
127
|
-
[
|
|
128
|
-
[
|
|
129
|
-
[
|
|
130
|
-
|
|
131
|
-
[
|
|
132
|
-
|
|
133
|
-
[
|
|
134
|
-
|
|
135
|
-
[
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
[
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
[
|
|
143
|
-
|
|
144
|
-
[
|
|
145
|
-
|
|
146
|
-
[
|
|
147
|
-
|
|
148
|
-
[
|
|
149
|
-
|
|
150
|
-
[
|
|
151
|
-
|
|
152
|
-
[
|
|
153
|
-
|
|
154
|
-
[
|
|
155
|
-
[
|
|
156
|
-
[
|
|
157
|
-
|
|
158
|
-
[
|
|
159
|
-
|
|
160
|
-
[
|
|
161
|
-
[
|
|
162
|
-
[
|
|
163
|
-
[
|
|
164
|
-
|
|
165
|
-
[
|
|
166
|
-
[
|
|
167
|
-
|
|
168
|
-
[
|
|
169
|
-
|
|
170
|
-
[
|
|
171
|
-
[
|
|
172
|
-
|
|
173
|
-
[
|
|
174
|
-
|
|
175
|
-
[
|
|
176
|
-
[
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
[
|
|
180
|
-
[
|
|
181
|
-
|
|
182
|
-
[
|
|
183
|
-
|
|
184
|
-
[
|
|
185
|
-
|
|
186
|
-
[
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
[
|
|
192
|
-
|
|
193
|
-
[
|
|
194
|
-
|
|
195
|
-
[
|
|
196
|
-
|
|
197
|
-
[
|
|
198
|
-
|
|
199
|
-
[
|
|
200
|
-
|
|
201
|
-
[
|
|
202
|
-
[
|
|
203
|
-
[
|
|
204
|
-
|
|
205
|
-
[
|
|
206
|
-
|
|
207
|
-
[
|
|
208
|
-
[
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
[
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
[
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
[
|
|
224
|
-
|
|
225
|
-
[
|
|
226
|
-
|
|
227
|
-
[
|
|
228
|
-
|
|
229
|
-
[
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
[
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
[
|
|
238
|
-
|
|
239
|
-
[
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
[
|
|
243
|
-
|
|
244
|
-
[
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
[
|
|
249
|
-
[
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
[
|
|
170
|
+
[Note, 0xFFFF, "label:[干支]", 'position:共通'], # 0: 干支
|
|
171
|
+
# [Note, 0x, "label:[干=ja:%%<十干>]",
|
|
172
|
+
# 'position:共通'], # 干
|
|
173
|
+
# [Note, 0x, "label:[支=ja:%%<十二支>]",
|
|
174
|
+
# 'position:共通'], # 支
|
|
175
|
+
[Note, 0x3FFF, "label:[納音]", 'position:共通', 'suffix:是'], # 1: 干支
|
|
176
|
+
[Note, 0xFFFF, "label:[十二直]", 'position:共通'], # 2: 支 節月
|
|
177
|
+
[Note, 0xFFFF, "label:[七曜]", 'position:共通'], # 3: 七曜
|
|
178
|
+
[Note, 0xF800, "label:[廿八宿=ja:%%<二十八宿>]",
|
|
179
|
+
'position:共通'], # 4: 廿八宿
|
|
180
|
+
[Note, 0x07F8, "label:[廿七宿=ja:%%<二十八宿>]",
|
|
181
|
+
'position:共通'], # 5: 暦月 暦日
|
|
182
|
+
[Note, 0xC000, "label:[九星]", 'position:民間'], # 6: 九星
|
|
183
|
+
[Note, 0x8000, "label:[六曜]", 'position:民間'], # 7: 暦月 暦日
|
|
184
|
+
[Note, 0xE000, "label:[祝祭日]", 'position:祝祭日'], # 8: 暦月 暦日 (七曜)
|
|
185
|
+
[Note, 0xFFFF, "label:[廿四節気=ja:%%<二十四節気>]",
|
|
186
|
+
'position:時候'], # 9: 太陽黄経
|
|
187
|
+
[Note, 0xFFFF, "label:[節中=]", 'position:時候'], # 10: 太陽黄経
|
|
188
|
+
[Note, 0xFFFC, "label:[七十二候]", 'position:時候'], # 11: 太陽黄経
|
|
189
|
+
[Note, 0x3FFC, "label:[六十卦=]", 'position:時候'], # 12: 太陽黄経
|
|
190
|
+
[Note, 0xF800, "label:[節分]", 'position:雑節'], # 13: 立春からの日数
|
|
191
|
+
[Note, 0xF800, "label:[初午]", 'position:雑節'], # 14: 支 節月 or 暦月
|
|
192
|
+
[Note, 0xF800, "label:[八十八夜]", 'position:雑節'], # 15: 立春からの日数
|
|
193
|
+
[Note, 0xF800, "label:[入梅]", 'position:雑節'], # 16: 干 太陽黄経
|
|
194
|
+
[Note, 0xF800, "label:[二百十日]", 'position:雑節'], # 17: 立春からの日数
|
|
195
|
+
[Note, 0xF800, "label:[二百廿日]", 'position:雑節'], # 18: 立春からの日数
|
|
196
|
+
|
|
197
|
+
[Note, 0x3FFC, "label:[大禍=ja:%%<暦注下段>#%.<大禍日>]",
|
|
198
|
+
'position:上段 上段 欄外 欄外', 'suffix:日'], # 19: 支 節月
|
|
199
|
+
[Note, 0x3FFC, "label:[滅門=ja:%%<暦注下段>#%.<滅門日>]",
|
|
200
|
+
'position:上段 上段 欄外 欄外', 'suffix:日'], # 20: 支 節月
|
|
201
|
+
[Note, 0x3FFC, "label:[狼藉=ja:%%<暦注下段>#%.<狼藉日>]",
|
|
202
|
+
'position:上段 上段 欄外 欄外', 'suffix:日'], # 21: 支 節月
|
|
203
|
+
|
|
204
|
+
[Note, 0x07F8, "label:[甘露=]", 'position:上段 上段 上段 上段', 'suffix:日'], # 22: 七曜 廿七宿
|
|
205
|
+
[Note, 0x07F8, "label:[金剛峯=]", 'position:上段 上段 上段 上段'], # 23: 七曜 廿七宿
|
|
206
|
+
[Note, 0x07F8, "label:[羅刹=]", 'position:中段 中段 上段 上段'], # 24: 七曜 廿七宿
|
|
207
|
+
|
|
208
|
+
[Note, 0x3FFC, "label:[大將軍=ja:%%<大将軍_(方位神)>]",
|
|
209
|
+
'position:上段 上段 上段 上段', 'suffix:-'], # 25: 干支 節年
|
|
210
|
+
[Note, 0xFFFC, "label:[天一=ja:%%<天一神>]",
|
|
211
|
+
'position:上段 上段 上段 上段', 'suffix:-'], # 26: 干支
|
|
212
|
+
[Note, 0x3FFC, "label:[土公=ja:%%<土公神>]",
|
|
213
|
+
'position:上段 上段 上段 上段', 'suffix:-'], # 27: 干支
|
|
214
|
+
[Note, 0x3FFC, "label:[歳下食=ja:%%<暦注下段>#%.<歳下食>]",
|
|
215
|
+
'position:上段 上段 上段 上段'], # 28: 干支 節年
|
|
216
|
+
[Note, 0x3FFC, "label:[忌遠行=]", 'position:上段 中段 上段 上段'], # 29: 支 節月
|
|
217
|
+
[Note, 0x3FFC, "label:[忌夜行=]", 'position:上段 中段 上段 上段'], # 30: 支 節月
|
|
218
|
+
[Note, 0x3FFC, "label:[下食時=ja:%%<暦注下段>#%.<時下食>]",
|
|
219
|
+
'position:上段 上段 上段 上段', 'suffix:-'], # 31: 支 節月 貞享暦で一部廃止
|
|
220
|
+
[Note, 0x3FFC, "label:[天間=]", 'position:上段 中段 上段 中段上'], # 32: 干支 節月
|
|
221
|
+
[Note, 0x3FFC, "label:[不視病=]", 'position:上段 上段 上段 上段'], # 33: 干
|
|
222
|
+
[Note, 0x3FFC, "label:[不問疾=]", 'position:上段 上段 上段 上段'], # 34: 干
|
|
223
|
+
[Note, 0x3FFC, "label:[不弔人=]", 'position:上段 上段 上段 上段'], # 35: 支
|
|
224
|
+
[Note, 0xFFFC, "label:[彼岸]", 'position:仮名暦'], # 36: 太陽黄経
|
|
225
|
+
[Note, 0xFFFF, "label:[社=ja:%%<社日>]",
|
|
226
|
+
'position:中段 中段 中段 中段', 'suffix:日'], # 37: 干 太陽黄経
|
|
227
|
+
[Note, 0xFFFF, "label:[三伏]", 'position:中段 中段 中段 中段'], # 38: 干 太陽黄経
|
|
228
|
+
[Note, 0x3FFC, "label:[除手足甲=]", 'position:中段 中段 中段 中段'], # 39: 晦(除手足甲)、支(片方のみ), 没滅凶会日×
|
|
229
|
+
[Note, 0x3FFC, "label:[沐浴=]", 'position:中段 中段 中段 中段'], # 40: 支 没滅凶会日×
|
|
230
|
+
[Note, 0x3FFD, "label:[臘=ja:%%<臘日>]",
|
|
231
|
+
'position:中段 中段 中段 中段', 'suffix:日'], # 41: 支 太陽黄経
|
|
232
|
+
[Note, 0x3FFC, "label:[伐=]", 'position:上段 中段 中段 中段上', 'suffix:日'], # 42: 干支
|
|
233
|
+
[Note, 0x3FFC, "label:[五墓=ja:%%<暦注下段>#%.<五墓日>]",
|
|
234
|
+
'position:上段 上段 中段 中段下', 'suffix:日'], # 43: 干支
|
|
235
|
+
[Note, 0x3FFC, "label:[六蛇=]", 'position:上段 上段 中段 中段上'], # 44: 干支 節月
|
|
236
|
+
[Note, 0x3FFC, "label:[七鳥=]", 'position:上段 上段 中段 中段上'], # 45: 干支 節月
|
|
237
|
+
[Note, 0x3FFC, "label:[八龍=]", 'position:上段 上段 中段 中段上'], # 46: 干支 節月
|
|
238
|
+
[Note, 0x3FFC, "label:[九虎=]", 'position:上段 中段 中段 中段上'], # 47: 干支 節月
|
|
239
|
+
[Note, 0x07FF, "label:[没=ja:%%<没日>]",
|
|
240
|
+
'position:中段 中段 中段 中段', 'suffix:日'], # 48: 太陽黄経
|
|
241
|
+
[Note, 0xFFF8, "label:[日食]", 'position:中段 中段 中段 中段'], # 49: 日食表
|
|
242
|
+
[Note, 0x07FC, "label:[滅=ja:%%<滅日]",
|
|
243
|
+
'position:中段 中段 中段 中段', 'suffix:日'], # 50: 月の位相
|
|
244
|
+
[Note, 0xFFF8, "label:[月食]", 'position:中段 中段 中段 中段'], # 51: 月食表
|
|
245
|
+
[Note, 0xC7FD, "label:[月相]", 'position:中段 中段 中段 中段'], # 52: 月の位相
|
|
246
|
+
[Note, 0xFFFF, "label:[土用事=ja:%%<土用>]",
|
|
247
|
+
'position:中段 中段 中段 中段'], # 53: 太陽黄経
|
|
248
|
+
[Note, 0x3FF0, "label:[伏龍=]", 'position:上段 上段 下段 下段', 'suffix:在'], # 54: 太陽黄経
|
|
249
|
+
|
|
250
|
+
[Note, 0x3FFF, "label:[凶会=ja:%%<暦注下段>#%.<凶会日>]",
|
|
251
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 55: 干支 節月(宣明暦以前)/暦月(貞享暦以降)
|
|
252
|
+
[Note, 0x3FFF, "label:[大小歳=]", 'position:下段 下段 下段 下段'], # 56: 干支 節月
|
|
253
|
+
[Note, 0x3FFC, "label:[歳徳=ja:%%<歳徳神>]",
|
|
254
|
+
'position:下段 下段 下段 下段'], # 57: 干 節年 凶会日× ~合も
|
|
255
|
+
[Note, 0x0003, "label:[天倉=]", 'position:古注'], # 58: 干支 節月
|
|
256
|
+
# [Note, 0x0003, "label:[天李=]", 'position:古注'], # 干支 節月?
|
|
257
|
+
[Note, 0x37FF, "label:[天恩=ja:%%<暦注下段>#%.<天恩日>]",
|
|
258
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 59: 干支 節月 凶会日×
|
|
259
|
+
[Note, 0xFFFF, "label:[天赦=ja:%%<暦注下段>#%.<天赦日>]",
|
|
260
|
+
'position:下段 下段 下段 下段'], # 60: 干支 節月
|
|
261
|
+
[Note, 0x37FF, "label:[母倉=ja:%%<暦注下段>#%.<母倉日>]",
|
|
262
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 61: 支 節月 凶会日×
|
|
263
|
+
[Note, 0x37FC, "label:[月徳=]", 'position:下段 下段 下段 下段'], # 62: 干 節月 凶会日× ~合も
|
|
264
|
+
[Note, 0x3FFF, "label:[九坎=]", 'position:下段 下段 下段 下段'], # 63: 支 節月
|
|
265
|
+
[Note, 0x3FFF, "label:[歸忌=ja:%%<暦注下段>#%.<帰忌日>]",
|
|
266
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 64: 支 節月
|
|
267
|
+
[Note, 0x3FFF, "label:[血忌=ja:%%<暦注下段>#%.<血忌日>]",
|
|
268
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 65: 支 節月
|
|
269
|
+
[Note, 0x3FFC, "label:[無翹=]", 'position:下段 下段 下段 下段'], # 66: 支 節月
|
|
270
|
+
[Note, 0x3FFF, "label:[厭=]", 'position:下段 下段 下段 下段'], # 67: 支 節月
|
|
271
|
+
[Note, 0x3FFC, "label:[重=ja:%%<暦注下段>#%.<重日>]",
|
|
272
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 68: 支
|
|
273
|
+
[Note, 0x3FFD, "label:[復=ja:%%<暦注下段>#%.<復日>]",
|
|
274
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 69: 干 節月
|
|
275
|
+
[Note, 0x3FFC, "label:[月煞=]", 'position:下段 下段 下段 下段'], # 70: 支 節月
|
|
276
|
+
[Note, 0x3FFF, "label:[往亡=ja:%%<暦注下段>#%.<往亡日>]",
|
|
277
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 71: 太陽黄経
|
|
278
|
+
[Note, 0x3FFF, "label:[日遊=ja:%%<日遊神>]",
|
|
279
|
+
'position:最下段', 'suffix:在'], # 72: 干支
|
|
280
|
+
[Note, 0x07FF, "label:[人神配当=]", 'position:最下段孟月', 'suffix:-'], # 73: 暦日
|
|
281
|
+
|
|
282
|
+
[Note, 0x3E00, "label:[受死=ja:%%<暦注下段>#%.<受死日>]",
|
|
283
|
+
'position:仮名暦', 'suffix:日'], # 74: 支 節月
|
|
284
|
+
[Note, 0xFFF0, "label:[八專]", 'position:仮名暦'], # 75: 干支
|
|
285
|
+
[Note, 0x3E00, "label:[八專間日=ja:%%<八専>]",
|
|
286
|
+
'position:仮名暦'], # 76: 干支
|
|
287
|
+
[Note, 0xC000, "label:[金神間日=ja:%%<金神>#%.<金神の遊行・間日>]",
|
|
288
|
+
'position:仮名暦'], # 77: 支 節月
|
|
289
|
+
[Note, 0xC000, "label:[金神遊行=ja:%%<金神>#%.<金神の遊行・間日>]",
|
|
290
|
+
'position:仮名暦'], # 78: 支 節月
|
|
291
|
+
[Note, 0x3FF0, "label:[天火=ja:%%<暦注下段>#%.<天火日>]",
|
|
292
|
+
'position:仮名暦', 'suffix:日'], # 79: 支 節月
|
|
293
|
+
[Note, 0x3FF0, "label:[地火=ja:%%<暦注下段>#%.<地火日>]",
|
|
294
|
+
'position:仮名暦', 'suffix:日'], # 80: 支 節月
|
|
295
|
+
[Note, 0x3800, "label:[人火=]", 'position:仮名暦'], # 81: 支 節月
|
|
296
|
+
[Note, 0x3800, "label:[雷火=]", 'position:仮名暦'], # 82: 支 節月
|
|
297
|
+
[Note, 0x3FF0, "label:[赤舌=ja:%%<赤舌日>]",
|
|
298
|
+
'position:仮名暦', 'suffix:日'], # 83: 暦月 暦日
|
|
299
|
+
[Note, 0x3E00, "label:[十死=ja:%%<暦注下段>#%.<十死日>]",
|
|
300
|
+
'position:仮名暦', 'suffix:日'], # 84: 支 節月
|
|
301
|
+
[Note, 0x3E00, "label:[道虚=]", 'position:仮名暦', 'suffix:日'], # 85: 暦日
|
|
302
|
+
[Note, 0x3E00, "label:[大明=ja:%%<暦注下段>#%.<大明日>]",
|
|
303
|
+
'position:仮名暦', 'suffix:日'], # 86: 干支
|
|
304
|
+
[Note, 0x0600, "label:[大赤=ja:%%<赤口日>]",
|
|
305
|
+
'position:仮名暦', 'suffix:日'], # 87: 暦月 暦日
|
|
306
|
+
[Note, 0xF800, "label:[甲子待=ja:%%<甲子>]",
|
|
307
|
+
'position:仮名暦'], # 88: 干支
|
|
308
|
+
[Note, 0xC000, "label:[己巳]", 'position:仮名暦'], # 89: 干支
|
|
309
|
+
[Note, 0xF800, "label:[庚申待]", 'position:仮名暦'], # 90: 干支
|
|
310
|
+
[Note, 0x3800, "label:[犯土]", 'position:仮名暦'], # 91: 干支
|
|
311
|
+
[Note, 0xF800, "label:[十方暮]", 'position:仮名暦'], # 92: 干支
|
|
312
|
+
[Note, 0xF800, "label:[一粒万倍=ja:%%<一粒万倍日>]",
|
|
313
|
+
'position:仮名暦', 'suffix:日'], # 93: 支 節月
|
|
314
|
+
[Note, 0x3800, "label:[天福=]", 'position:仮名暦'], # 94: 支 節月
|
|
315
|
+
[Note, 0x3800, "label:[地福=]", 'position:仮名暦'], # 95: 支 節月
|
|
316
|
+
[Note, 0x3800, "label:[地五福=]", 'position:仮名暦'], # 96: 支 節月
|
|
317
|
+
[Note, 0xB800, "label:[三隣亡]", 'position:仮名暦'], # 97: 支 節月
|
|
318
|
+
[Note, 0xF800, "label:[不成就=ja:%%<不成就日>]",
|
|
319
|
+
'position:仮名暦', 'suffix:日'], # 98: 暦月 暦日/晦日
|
|
320
|
+
[Note, 0x3FFF, "label:[三寶吉=ja:%%<三宝吉>]",
|
|
321
|
+
'position:上段 上段 上段 上段'], # 99: 干支 節月(宣明暦以前)/暦月(貞享暦以降)
|
|
322
|
+
[Note, 0x3FFF, "label:[神吉=ja:%%<暦注下段>#%.<神日>]",
|
|
323
|
+
'position:上段 上段 中段 中段上', 'suffix:日'], #100: 干支 節月
|
|
324
|
+
[Note, 0x3FFF, "label:[雑事吉=]", 'position:雑事吉'], #101: 干支 節月(宣明暦以前)/暦月(貞享暦以降)
|
|
325
|
+
[Note, 0x07FF, "label:[小字注=]", 'position:下段小字 下段小字 下段小字 下段小字'],#102: 干支 節月(宣明暦以前)/暦月(貞享暦以降)
|
|
253
326
|
]
|
|
254
327
|
]]
|
|
255
328
|
|
|
329
|
+
#
|
|
330
|
+
# 日本暦注の時代変遷
|
|
331
|
+
#
|
|
332
|
+
# @private
|
|
333
|
+
NoteTypes = (3...When::TM::CalendarEra::JapaneseSolarSeries[1].size).to_a.map {|i|
|
|
334
|
+
calendars =
|
|
335
|
+
[When::TM::CalendarEra::JapaneseLuniSolarSeries[1][i][2],
|
|
336
|
+
When::TM::CalendarEra::JapaneseSolarSeries[1][i][2]].map {|epoch|
|
|
337
|
+
epoch =~ /^(-?\d+)-(\d+)-(\d+)\^(.+)$/
|
|
338
|
+
$4
|
|
339
|
+
}
|
|
340
|
+
[$2 == '01' ? $1.to_i : $1.to_i+1, Cal4Note.new(*calendars)]
|
|
341
|
+
}.reverse
|
|
342
|
+
|
|
343
|
+
# @private
|
|
344
|
+
NoteRange = [
|
|
345
|
+
# 開始 具注暦 七十二候 index mask
|
|
346
|
+
[-660, 0, 0], # ~ 696 0 : 0001
|
|
347
|
+
[ 697, 0, 0], # ~ 763 1 : 0002
|
|
348
|
+
[ 764, 0, 2], # ~ 800 2 : 0004
|
|
349
|
+
[ 801, 0, 2], # ~ 900 3 : 0008
|
|
350
|
+
[ 901, 0, 2], # ~1003 4 : 0010
|
|
351
|
+
[1004, 1, 2], # ~1047 5 : 0020
|
|
352
|
+
[1048, 1, 2], # ~1100 6 : 0040
|
|
353
|
+
[1101, 1, 2], # ~1184 7 : 0080
|
|
354
|
+
[1185, 2, 2], # ~1300 8 : 0100
|
|
355
|
+
[1301, 2, 2], # ~1337 9 : 0200
|
|
356
|
+
[1338, 3, 2], # ~1684 10 : 0400
|
|
357
|
+
[1685, 3, 3], # ~1754 11 : 0800
|
|
358
|
+
[1755, 3, 4], # ~1867 12 : 1000
|
|
359
|
+
[1868, 3, 4], # ~1872 13 : 2000
|
|
360
|
+
[1873, 3, 4], # ~1873 14 : 4000
|
|
361
|
+
[1874, 3, 5] # ~ 15 : 8000
|
|
362
|
+
]
|
|
363
|
+
|
|
364
|
+
# @private
|
|
365
|
+
NoteFocused = (0...NoteRange.size).to_a.map {|range|
|
|
366
|
+
(3..5).to_a.map {|cord|
|
|
367
|
+
notes = NoteObjects[1][cord]
|
|
368
|
+
(2...notes.size).to_a.inject([]) {|focused,note|
|
|
369
|
+
focused << notes[note][2][/\[.+?[=\]]/][1..-2] if notes[note][1][range] == 1
|
|
370
|
+
focused
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
#
|
|
376
|
+
# 月の大小
|
|
377
|
+
#
|
|
378
|
+
# @private
|
|
379
|
+
MonthPattern = {
|
|
380
|
+
29 => '小',
|
|
381
|
+
30 => '大',
|
|
382
|
+
-28 => '平',
|
|
383
|
+
-29 => '閏',
|
|
384
|
+
-30 => '小',
|
|
385
|
+
-31 => '大'
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
#
|
|
389
|
+
# 日本暦注が使用する暦法
|
|
390
|
+
#
|
|
391
|
+
# @private
|
|
392
|
+
class Cal4Note
|
|
393
|
+
attr_reader :calendar, :solar
|
|
394
|
+
|
|
395
|
+
def l_calendar
|
|
396
|
+
@l_calendar ||= When.Calendar(@calendar)
|
|
397
|
+
end
|
|
398
|
+
|
|
399
|
+
def s_calendar
|
|
400
|
+
@s_calendar ||= When.Calendar(@solar)
|
|
401
|
+
end
|
|
402
|
+
|
|
403
|
+
def l_phases
|
|
404
|
+
@l_phases ||= JapaneseNote::LunarPhases.new('formula'=>l_calendar.formula[-1])
|
|
405
|
+
end
|
|
406
|
+
|
|
407
|
+
def s_terms
|
|
408
|
+
@s_terms ||= JapaneseNote::SolarTerms.new('formula'=>s_calendar.formula[0])
|
|
409
|
+
end
|
|
410
|
+
|
|
411
|
+
def doyo
|
|
412
|
+
s_calendar.doyo
|
|
413
|
+
end
|
|
414
|
+
end
|
|
415
|
+
|
|
256
416
|
#
|
|
257
417
|
# 日本暦注用の NoteObjects の要素のための内部クラス
|
|
258
418
|
#
|
|
259
|
-
|
|
419
|
+
# @private
|
|
420
|
+
class Note
|
|
260
421
|
|
|
261
|
-
# @private
|
|
262
422
|
attr_reader :label, :position, :suffix
|
|
263
423
|
|
|
264
|
-
# @private
|
|
265
424
|
def to_note_hash(note, dates=nil)
|
|
266
425
|
{
|
|
267
426
|
:note => self,
|
|
@@ -286,55 +445,50 @@ class When::CalendarTypes::CalendarNote
|
|
|
286
445
|
#
|
|
287
446
|
# 日本暦注計算に必要となる暦日や暦法をまとめた内部クラス
|
|
288
447
|
#
|
|
448
|
+
# @private
|
|
289
449
|
class Dates
|
|
290
450
|
|
|
291
|
-
|
|
292
|
-
attr_reader :year, :calendar, :doyo, :o_date, :m_date, :l_date, :s_date, :s_terms, :l_phases
|
|
293
|
-
|
|
294
|
-
# 具注暦の配置パターン
|
|
295
|
-
# @private
|
|
296
|
-
def index_g
|
|
297
|
-
return @index_g if @index_g
|
|
298
|
-
@index_g = (@year < 1004) ? 0 : # 御堂関白記(前期)以前
|
|
299
|
-
(@year < 1185) ? 1 : # 御堂関白記(後期)
|
|
300
|
-
(@year < 1338) ? 2 : # 鎌倉時代
|
|
301
|
-
3 # 室町時代以降
|
|
302
|
-
end
|
|
303
|
-
|
|
304
|
-
# 七十二候パターン
|
|
305
|
-
# @private
|
|
306
|
-
def index_s
|
|
307
|
-
return @index_s if @index_s
|
|
308
|
-
@index_s = (@year < 1685) ? 1 : # 宣明暦式
|
|
309
|
-
(@year < 1755) ? 2 : # 貞享暦式
|
|
310
|
-
(@year < 1874) ? 3 : # 宝暦暦式
|
|
311
|
-
4 # 略本暦式
|
|
312
|
-
end
|
|
451
|
+
attr_reader :year, :precision, :cal4note, :range, :index_g, :index_s, :o_date, :l_date, :m_date, :s_date
|
|
313
452
|
|
|
314
453
|
# 初期設定
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
454
|
+
def initialize(date, year=date.most_significant_coordinate, precision=date.precision, cal4note=nil)
|
|
455
|
+
|
|
456
|
+
# 暦注パターン
|
|
457
|
+
if cal4note
|
|
458
|
+
# 年代による判定
|
|
459
|
+
(1...NoteRange.size).to_a.reverse.each do |i|
|
|
460
|
+
if year >= NoteRange[i][0]
|
|
461
|
+
@range = i
|
|
462
|
+
break
|
|
463
|
+
end
|
|
464
|
+
end
|
|
465
|
+
@range ||= 0
|
|
466
|
+
else
|
|
467
|
+
# 暦法による判定
|
|
468
|
+
cal4note = Cal4Note.new(date.frame, date.frame.twin)
|
|
469
|
+
@range =
|
|
470
|
+
case cal4note.l_calendar.formula[-1]
|
|
471
|
+
when When::Ephemeris::ChineseTrueLunation
|
|
472
|
+
date.frame.twin =~ /戊寅|麟徳/ ? 1 : 10 # 唐代定朔暦(儀鳳暦 or 宣明暦)
|
|
473
|
+
when When::Ephemeris::MeanLunation ; 0 # 唐代以前平朔暦(元嘉暦)
|
|
474
|
+
else ; 15 # 現代の旧暦
|
|
475
|
+
end
|
|
327
476
|
end
|
|
328
477
|
|
|
329
|
-
|
|
330
|
-
@
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
@
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
@
|
|
337
|
-
@
|
|
478
|
+
# 具注暦の配置
|
|
479
|
+
@index_g = NoteRange[@range][1]
|
|
480
|
+
|
|
481
|
+
# 七十二候
|
|
482
|
+
@index_s = NoteRange[@range][2]
|
|
483
|
+
|
|
484
|
+
# その他の属性
|
|
485
|
+
@year = year
|
|
486
|
+
@precision = precision
|
|
487
|
+
@cal4note = cal4note
|
|
488
|
+
@o_date = date
|
|
489
|
+
@l_date = @cal4note.l_calendar ^ date
|
|
490
|
+
@m_date = date.frame.kind_of?(When::CalendarTypes::Julian) ? @l_date : @o_date
|
|
491
|
+
@s_date = @cal4note.s_calendar ^ date
|
|
338
492
|
end
|
|
339
493
|
end
|
|
340
494
|
|
|
@@ -351,14 +505,14 @@ class When::CalendarTypes::CalendarNote
|
|
|
351
505
|
# @return [Array<Hash>] 上記に該当せず、:indices が Integer の場合
|
|
352
506
|
# @return [Array<Array<Hash>>] 上記のいずれにも該当しない場合
|
|
353
507
|
# @note return 値の [Hash] の要素は下記の通り
|
|
354
|
-
# :note => 暦注要素 (When::CalendarTypes::JapaneseNote::
|
|
508
|
+
# :note => 暦注要素 (When::CalendarTypes::JapaneseNote::Note)
|
|
355
509
|
# :value => 暦注の値 (String or When::BasicTypes::M17n または、その Array)
|
|
356
510
|
# :position => 具注暦でのその暦注の配置場所(String)
|
|
357
511
|
#
|
|
358
512
|
def notes(date, options={})
|
|
359
|
-
dates, indices, notes, conditions, options =
|
|
513
|
+
dates, indices, notes, conditions, options = _parse_note(date, options)
|
|
360
514
|
_result(indices.map {|i|
|
|
361
|
-
next [] unless i <= dates.
|
|
515
|
+
next [] unless i <= dates.precision
|
|
362
516
|
send(NoteMethods[i-1], dates, notes[i-1], conditions)
|
|
363
517
|
}, options)
|
|
364
518
|
end
|
|
@@ -375,16 +529,35 @@ class When::CalendarTypes::CalendarNote
|
|
|
375
529
|
def year_notes(dates, notes, conditions={})
|
|
376
530
|
_note_values(dates, notes, _all_keys[-3], _elements[-3]) do |dates, focused_notes, notes_hash|
|
|
377
531
|
|
|
532
|
+
focused_notes[0..-1] = focused_notes & NoteFocused[dates.range][-3]
|
|
378
533
|
root = When.Resource('_co:CommonResidue')
|
|
379
534
|
|
|
380
535
|
# 干支
|
|
381
|
-
residue = dates.o_date.most_significant_coordinate-4
|
|
536
|
+
residue = (dates.precision < When::DAY ? dates.o_date : dates.s_date).most_significant_coordinate - 4
|
|
382
537
|
notes_hash['干支'] = root['干支'][residue % 60]
|
|
383
538
|
notes_hash['干'] = root['干' ][residue % 10]
|
|
384
539
|
notes_hash['支'] = root['支' ][residue % 12]
|
|
385
540
|
|
|
541
|
+
# 廿八宿
|
|
542
|
+
notes_hash['廿八宿'] ||= root['宿'][(residue+18) % 28]
|
|
543
|
+
|
|
386
544
|
# 九星
|
|
387
|
-
notes_hash['九星'] ||= root['九星'][When::Coordinates::Kyusei.year(
|
|
545
|
+
notes_hash['九星'] ||= root['九星'][When::Coordinates::Kyusei.year(residue)]
|
|
546
|
+
|
|
547
|
+
# 大小
|
|
548
|
+
unless notes_hash['大小']
|
|
549
|
+
year = dates.o_date.floor(When::YEAR)
|
|
550
|
+
month = year.floor(When::MONTH)
|
|
551
|
+
pattern = ''
|
|
552
|
+
while year == month
|
|
553
|
+
length = month.length(When::MONTH)
|
|
554
|
+
length = -length if dates.o_date.frame.kind_of?(When::CalendarTypes::Julian) # 太陽暦
|
|
555
|
+
pattern += '閏' if month[When::MONTH] * 0 == 1
|
|
556
|
+
pattern += MonthPattern[length] || '改'
|
|
557
|
+
month += When::DurationP1M
|
|
558
|
+
end
|
|
559
|
+
notes_hash['大小'] = "#{pattern}(#{year.length(When::YEAR)})"
|
|
560
|
+
end
|
|
388
561
|
|
|
389
562
|
# その他
|
|
390
563
|
[notes_hash['干支'], notes_hash['干'], notes_hash['支']].each do |note|
|
|
@@ -398,17 +571,28 @@ class When::CalendarTypes::CalendarNote
|
|
|
398
571
|
def month_notes(dates, notes, conditions={})
|
|
399
572
|
_note_values(dates, notes, _all_keys[-2], _elements[-2]) do |dates, focused_notes, notes_hash|
|
|
400
573
|
|
|
574
|
+
focused_notes[0..-1] = focused_notes & NoteFocused[dates.range][-2]
|
|
401
575
|
root = When.Resource('_co:CommonResidue')
|
|
402
576
|
|
|
403
577
|
# 干支
|
|
404
|
-
residue = dates.o_date
|
|
578
|
+
residue = month_stem_branch(dates.precision < When::DAY ? dates.o_date : dates.m_date)
|
|
405
579
|
notes_hash['干支'] = root['干支'][residue % 60]
|
|
406
580
|
notes_hash['干'] = root['干' ][residue % 10]
|
|
407
581
|
notes_hash['支'] = root['支' ][residue % 12]
|
|
408
582
|
|
|
583
|
+
# 廿八宿
|
|
584
|
+
notes_hash['廿八宿'] ||= root['宿'][(residue+6) % 28]
|
|
585
|
+
|
|
409
586
|
# 九星
|
|
410
587
|
notes_hash['九星'] ||= root['九星'][When::Coordinates::Kyusei.month(
|
|
411
|
-
|
|
588
|
+
month_stem_branch(dates.precision < When::DAY ? dates.o_date : dates.s_date))]
|
|
589
|
+
|
|
590
|
+
# 大小
|
|
591
|
+
unless notes_hash['大小']
|
|
592
|
+
length = dates.o_date.length(When::MONTH)
|
|
593
|
+
length = -length if dates.o_date.frame.kind_of?(When::CalendarTypes::Julian) # 太陽暦
|
|
594
|
+
notes_hash['大小'] = "#{dates.o_date[When::MONTH]*0==1 ? '閏' : ''}#{MonthPattern[length] || '改'}(#{length.abs})"
|
|
595
|
+
end
|
|
412
596
|
|
|
413
597
|
# その他
|
|
414
598
|
[notes_hash['干支'], notes_hash['干'], notes_hash['支'], JapaneseLuniSolarNote].each do |note|
|
|
@@ -422,7 +606,8 @@ class When::CalendarTypes::CalendarNote
|
|
|
422
606
|
def day_notes(dates, notes, conditions={})
|
|
423
607
|
_note_values(dates, notes, _all_keys[-1], _elements[-1]) do |dates, focused_notes, notes_hash|
|
|
424
608
|
|
|
425
|
-
|
|
609
|
+
focused_notes[0..-1] = focused_notes & NoteFocused[dates.range][-1]
|
|
610
|
+
root = When.Resource(dates.range == 1 ? '_co:CommonResidue?V=0618' : '_co:CommonResidue')
|
|
426
611
|
|
|
427
612
|
# 干支
|
|
428
613
|
residue = dates.s_date.to_i-11
|
|
@@ -430,28 +615,27 @@ class When::CalendarTypes::CalendarNote
|
|
|
430
615
|
notes_hash['干'] = root['干' ][residue % 10]
|
|
431
616
|
notes_hash['支'] = root['支' ][residue % 12]
|
|
432
617
|
|
|
433
|
-
# 七曜
|
|
434
|
-
notes_hash['七曜'] ||= root['Week'][dates.s_date.to_i % 7]
|
|
435
|
-
|
|
436
|
-
# 廿八宿
|
|
437
|
-
notes_hash['廿八宿'] ||= root['宿'][(dates.s_date.to_i+11) % 28] if dates.year >= 1685
|
|
438
|
-
|
|
439
|
-
# 九星
|
|
440
|
-
notes_hash['九星'] ||= root['九星'][When::Coordinates::Kyusei.day(dates.o_date, dates.s_terms)]
|
|
441
|
-
|
|
442
618
|
# その他
|
|
443
619
|
[SolarTerms, LunarPhases, notes_hash['干支'], notes_hash['干'], notes_hash['支'],
|
|
444
620
|
JapaneseLuniSolarNote, JapaneseSolarNote].each do |note|
|
|
445
621
|
note._day_notes(notes_hash, dates, conditions)
|
|
446
622
|
end
|
|
447
623
|
|
|
624
|
+
# 廿四節気
|
|
625
|
+
notes_hash['廿四節気'] = _residue24(notes_hash['廿四節気'], root, dates)
|
|
626
|
+
|
|
627
|
+
# 七曜
|
|
628
|
+
notes_hash['七曜'] ||= root['Week'][dates.s_date.to_i % 7]
|
|
629
|
+
|
|
448
630
|
# 廿七宿
|
|
449
|
-
notes_hash['廿七宿'] =
|
|
631
|
+
notes_hash['廿七宿'] = _residue27(notes_hash['廿七宿'], root)
|
|
632
|
+
|
|
633
|
+
# 廿八宿
|
|
634
|
+
notes_hash['廿八宿'] ||= root['宿'][(dates.s_date.to_i+11) % 28]
|
|
635
|
+
|
|
636
|
+
# 九星
|
|
637
|
+
notes_hash['九星'] ||= root['九星'][When::Coordinates::Kyusei.day(dates.s_date, dates.cal4note.s_terms)]
|
|
450
638
|
|
|
451
|
-
# 廿四節気
|
|
452
|
-
notes_hash['廿四節気'] = 3 - notes_hash['廿四節気'] if dates.calendar == '麟徳暦' &&
|
|
453
|
-
[1,2].include?(notes_hash['廿四節気']) # 啓蟄 <-> 雨水
|
|
454
|
-
notes_hash['廿四節気'] = root['二十四節気::*'][(notes_hash['廿四節気']-3) % 24] if notes_hash['廿四節気'].kind_of?(Integer)
|
|
455
639
|
notes_hash
|
|
456
640
|
end
|
|
457
641
|
end
|
|
@@ -459,28 +643,58 @@ class When::CalendarTypes::CalendarNote
|
|
|
459
643
|
#
|
|
460
644
|
# 日本暦日情報オブジェクトの生成
|
|
461
645
|
#
|
|
646
|
+
# @note 対となる太陽暦のある太陰太陽暦はそのまま(太陰太陽暦,太陽暦)の対
|
|
647
|
+
# そうでなければ、採用する対を年代により選択する
|
|
648
|
+
#
|
|
462
649
|
def _to_date_for_note(date)
|
|
463
|
-
date
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
return
|
|
650
|
+
if date.frame.kind_of?(When::CalendarTypes::ChineseLuniSolar)
|
|
651
|
+
return Dates.new(date) if date.frame.twin
|
|
652
|
+
o_date = date
|
|
653
|
+
else
|
|
654
|
+
o_date = _to_japanese_date(date)
|
|
655
|
+
return nil unless o_date
|
|
656
|
+
end
|
|
657
|
+
year = o_date.most_significant_coordinate
|
|
658
|
+
NoteTypes.each do |line|
|
|
659
|
+
return Dates.new(o_date, year, date.precision, line[1]) if year >= line[0]
|
|
469
660
|
end
|
|
470
661
|
nil
|
|
471
662
|
end
|
|
472
663
|
|
|
473
664
|
#
|
|
474
|
-
#
|
|
665
|
+
# 任意の暦を日本年号付暦日に変換
|
|
475
666
|
#
|
|
476
667
|
def _to_japanese_date(date)
|
|
477
|
-
return date if date.
|
|
478
|
-
date._attr[:query] && date._attr[:query]['area'].to_s == '日本'
|
|
668
|
+
return date if date._attr[:query] && date._attr[:query]['area'].to_s =~ /日本/
|
|
479
669
|
(date^ When.era(:area=>'日本')).each do |list|
|
|
480
670
|
return list[0] if list[0]
|
|
481
671
|
end
|
|
482
672
|
nil
|
|
483
673
|
end
|
|
674
|
+
|
|
675
|
+
#
|
|
676
|
+
# 廿四節気を Resudue 化
|
|
677
|
+
#
|
|
678
|
+
def _residue24(index, root, dates)
|
|
679
|
+
return index unless index.kind_of?(Integer)
|
|
680
|
+
root['二十四節気::*'][(index-3) % 24]
|
|
681
|
+
end
|
|
682
|
+
|
|
683
|
+
#
|
|
684
|
+
# 廿七宿を Resudue 化
|
|
685
|
+
#
|
|
686
|
+
def _residue27(index, root)
|
|
687
|
+
return index unless index.kind_of?(Integer)
|
|
688
|
+
root['宿'][index]
|
|
689
|
+
end
|
|
690
|
+
|
|
691
|
+
#
|
|
692
|
+
# 月の干支
|
|
693
|
+
#
|
|
694
|
+
def month_stem_branch(date)
|
|
695
|
+
date.most_significant_coordinate*12+(date.cal_date[1] * 1) +
|
|
696
|
+
(date.frame.kind_of?(When::CalendarTypes::Julian) ? 12 : 13)
|
|
697
|
+
end
|
|
484
698
|
end
|
|
485
699
|
|
|
486
700
|
#
|
|
@@ -488,6 +702,9 @@ class When::CalendarTypes::CalendarNote
|
|
|
488
702
|
#
|
|
489
703
|
class JapaneseSolarNote < self
|
|
490
704
|
|
|
705
|
+
#
|
|
706
|
+
# 祝祭日一覧
|
|
707
|
+
#
|
|
491
708
|
NotesList = {
|
|
492
709
|
[ 1, 1] => [[1868..1872, '元旦'], [1874..1948, '四方拝'], [1949..2100, '元日']],
|
|
493
710
|
[ 1, 3] => [[1874..1948, '元始祭']],
|
|
@@ -497,13 +714,16 @@ class When::CalendarTypes::CalendarNote
|
|
|
497
714
|
[ 1,29] => [[1873..1873, '神武天皇即位日']],
|
|
498
715
|
[ 1,30] => [[1874..1912, '孝明天皇祭']],
|
|
499
716
|
[ 2,11] => [[1874..1948, '紀元節'], [1967..2100, '建国記念の日']],
|
|
717
|
+
[ 2,24] => [[1989..1989, '昭和天皇の大喪の礼']],
|
|
500
718
|
[ 3, 3] => [[1868..1872, '弥生節句']],
|
|
501
719
|
[ 3, 0] => [[1879..1948, '春季皇霊祭'], [1949..2100, '春分の日']],
|
|
502
720
|
[ 4, 3] => [[1874..1948, '神武天皇祭']],
|
|
721
|
+
[ 4,10] => [[1959..1959, '皇太子明仁親王の結婚の儀']],
|
|
503
722
|
[ 4,29] => [[1927..1948, '天長節'], [1949..1988, '天皇誕生日'], [1989..2006, 'みどりの日'], [2007..2100, '昭和の日']],
|
|
504
723
|
[ 5, 3] => [[1949..2100, '憲法記念日']],
|
|
505
724
|
[ 5, 4] => [[2007..2100, 'みどりの日']],
|
|
506
725
|
[ 5, 5] => [[1868..1872, '端午節句'], [1949..2100, 'こどもの日']],
|
|
726
|
+
[ 6, 9] => [[1993..1993, '皇太子徳仁親王の結婚の儀']],
|
|
507
727
|
[ 7, 7] => [[1868..1872, '七夕節句']],
|
|
508
728
|
[ 7,15] => [[1868..1872, 'お盆']],
|
|
509
729
|
[ 7,20] => [[1996..2002, '海の日']],
|
|
@@ -521,27 +741,36 @@ class When::CalendarTypes::CalendarNote
|
|
|
521
741
|
[10,17] => [[1879..1947, '神嘗祭']],
|
|
522
742
|
[10,31] => [[1913..1926, '天長節祝日']],
|
|
523
743
|
[11, 3] => [[1873..1911, '天長節'], [1927..1947, '明治節'], [1948..2100, '文化の日']],
|
|
744
|
+
[11,10] => [[1915..1915, '即位の礼'], [1928..1928, '即位の礼']],
|
|
745
|
+
[11,12] => [[1990..1990, '即位の礼正殿の儀']],
|
|
746
|
+
[11,14] => [[1915..1915, '大嘗祭'], [1928..1928, '大嘗祭']],
|
|
747
|
+
[11,16] => [[1915..1915, '大饗第1日'], [1928..1928, '大饗第1日']],
|
|
524
748
|
[11,23] => [[1873..1947, '新嘗祭'], [1948..2100, '勤労感謝の日']],
|
|
525
749
|
[12,23] => [[1989..2100, '天皇誕生日']],
|
|
526
750
|
[12,25] => [[1927..1947, '大正天皇祭']]
|
|
527
751
|
}
|
|
528
752
|
|
|
753
|
+
# @private
|
|
754
|
+
Long = {3=>0, 9=>180}
|
|
755
|
+
|
|
529
756
|
class << self
|
|
530
757
|
|
|
531
758
|
# 日の暦注 - 祝祭日の計算
|
|
532
759
|
# @private
|
|
533
760
|
def _day_notes(notes, dates, conditions={})
|
|
534
|
-
#
|
|
761
|
+
# 明治維新以降の実暦日のみ扱う
|
|
762
|
+
return notes if dates.o_date.frame.kind_of?(When::CalendarTypes::ChineseLuniSolar)
|
|
535
763
|
year = dates.o_date.most_significant_coordinate
|
|
536
764
|
return notes unless year >= 1868
|
|
537
765
|
|
|
538
766
|
# 春分の日と秋分の日を祝祭日に加える
|
|
539
|
-
long =
|
|
767
|
+
long = Long[dates.o_date.cal_date[1]] if year >= 1878
|
|
540
768
|
if long
|
|
541
769
|
date = When.when?(dates.o_date.to_cal_date.to_s,
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
770
|
+
{:frame=>dates.o_date.frame,
|
|
771
|
+
:clock=>dates.s_date.frame.time_basis})
|
|
772
|
+
term = dates.cal4note.s_terms.term(date.floor(When::MONTH,
|
|
773
|
+
When::DAY), [long,360]).cal_date[1..2]
|
|
545
774
|
list = NotesList.dup
|
|
546
775
|
list[term] = list[[term[0],0]]
|
|
547
776
|
else
|
|
@@ -589,6 +818,7 @@ class When::CalendarTypes::CalendarNote
|
|
|
589
818
|
|
|
590
819
|
# 振替休日とハッピーマンデーを考慮しない祝祭日
|
|
591
820
|
def _note(list, year, month, day)
|
|
821
|
+
return nil if day == 0
|
|
592
822
|
year = [year, 2100].min
|
|
593
823
|
note = list[[month,day]]
|
|
594
824
|
return nil unless note
|
|
@@ -625,6 +855,11 @@ class When::CalendarTypes::CalendarNote
|
|
|
625
855
|
'羅刹' => [15, 21, 25, 19, 2, 13, 22] # 胃16 鬼22 翼26 参20 氐02 奎14 柳23
|
|
626
856
|
}
|
|
627
857
|
|
|
858
|
+
# 人神配当
|
|
859
|
+
HumanBody = %w(足大指 外踝 股内 腰 口 手 内踝 腕 尻 腰背
|
|
860
|
+
鼻柱 髪際 牙歯 胃管 遍身 胸 気街 股内 足 踝
|
|
861
|
+
足小指 足踝及胸、目下 肝及足 手陽明 足陽明 胸 膝 陰 膝晊 足跌)
|
|
862
|
+
|
|
628
863
|
# 六曜
|
|
629
864
|
Rokuyo = When.Resource('_m:JapaneseTerms::六曜')
|
|
630
865
|
|
|
@@ -638,6 +873,7 @@ class When::CalendarTypes::CalendarNote
|
|
|
638
873
|
# 日の暦注
|
|
639
874
|
# @private
|
|
640
875
|
def self._day_notes(notes, dates, conditions={})
|
|
876
|
+
|
|
641
877
|
# 廿七宿
|
|
642
878
|
m, l = [1,0].map {|f| dates.m_date.cal_date[1] * f}
|
|
643
879
|
d = (StarMansions[l==1 ? (conditions[:i27]||0) :
|
|
@@ -650,31 +886,25 @@ class When::CalendarTypes::CalendarNote
|
|
|
650
886
|
notes[c] = c if d == WeekDepended[c][w]
|
|
651
887
|
end
|
|
652
888
|
|
|
653
|
-
#
|
|
654
|
-
notes['神吉']
|
|
655
|
-
notes['神吉']
|
|
656
|
-
notes['
|
|
657
|
-
notes['
|
|
658
|
-
notes['
|
|
889
|
+
# 三寶吉・神吉・雑事吉
|
|
890
|
+
notes['神吉'] = notes['雑事吉'] = notes['三寶吉'] = nil if notes['没' ] || notes['滅' ]
|
|
891
|
+
notes['神吉'] = notes['雑事吉'] = nil if notes['日食'] || notes['月食'] || notes['往亡']
|
|
892
|
+
notes['三寶吉'] = nil if !notes['甘露'] && (notes['羅刹'] || notes['日食'] || notes['月食'])
|
|
893
|
+
notes['三寶吉'] = notes['甘露'] ? '三寶吉' : nil if /\+/ =~ notes['三寶吉'].to_s
|
|
894
|
+
notes['三寶吉'] = '三吉' if notes['三寶吉'] && dates.range >= 8 # 鎌倉以降
|
|
659
895
|
|
|
660
|
-
# 除手足甲 &
|
|
896
|
+
# 除手足甲 & 道虚・人神配当
|
|
661
897
|
y,m0,d0 = dates.m_date.cal_date
|
|
662
|
-
|
|
663
|
-
if (d0
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
# 晦日
|
|
667
|
-
notes['除手足甲'] = '除手足甲' unless notes['没'] || notes['滅'] || notes['凶会']
|
|
668
|
-
notes['道虚'] = '道虚'
|
|
669
|
-
misoka = true if m % 6 == 0 # 『現代こよみ読み解き事典』 for 不成就日
|
|
670
|
-
end
|
|
671
|
-
end
|
|
898
|
+
misoka = m0 != (dates.m_date + When.Duration('P1D')).cal_date[1] if d0 == 29
|
|
899
|
+
notes['除手足甲'] = '除手足甲' if ([6,16,30].include?(d0) || misoka) && !(notes['没'] || notes['滅'] || notes['凶会'])
|
|
900
|
+
notes['道虚'] = '道虚' if d0 % 6 == 0 || misoka
|
|
901
|
+
notes['人神配当'] = HumanBody[d0-1]
|
|
672
902
|
|
|
673
903
|
# 仮名暦
|
|
674
904
|
notes['赤舌' ] ||= d0 == (m * 5 - 3) % 6 + 1 ? '赤舌' : nil
|
|
675
|
-
notes['
|
|
676
|
-
notes['不成就'] ||= d0 % 8 == [6,3,2,1,4,5][m % 6] || misoka ? '不成就' : nil
|
|
677
|
-
notes['六曜' ] ||= Rokuyo[(m + d0) % 6]
|
|
905
|
+
notes['大赤' ] ||= d0 % 8 == (m * 7 - 3) % 8 ? '大赤' : nil
|
|
906
|
+
notes['不成就'] ||= d0 % 8 == [6,3,2,1,4,5][m % 6] || (misoka && m % 6 == 0) ? '不成就' : nil # 『現代こよみ読み解き事典』 for 不成就日
|
|
907
|
+
notes['六曜' ] ||= Rokuyo[(m + d0) % 6]
|
|
678
908
|
notes
|
|
679
909
|
end
|
|
680
910
|
end
|
|
@@ -682,25 +912,34 @@ class When::CalendarTypes::CalendarNote
|
|
|
682
912
|
#
|
|
683
913
|
# 月の位相による暦注
|
|
684
914
|
#
|
|
685
|
-
class LunarPhases <
|
|
686
|
-
|
|
687
|
-
Phases = {7.0=>'上弦', 8.0=>'上弦', 15.0=>'望', 22.0=>'下弦', 23.0=>'下弦'}
|
|
915
|
+
class JapaneseNote::LunarPhases < LunarPhases
|
|
688
916
|
|
|
689
917
|
# 日の暦注
|
|
690
918
|
# @private
|
|
691
919
|
def self._day_notes(notes, dates, conditions={})
|
|
692
|
-
return notes unless dates.year < 1685
|
|
693
920
|
date = When.when?(dates.o_date.to_cal_date.to_s,
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
phase =
|
|
921
|
+
{:frame=>dates.o_date.frame,
|
|
922
|
+
:clock=>dates.l_date.frame.time_basis})
|
|
923
|
+
phase, metsu = dates.cal4note.l_phases.position(date)
|
|
697
924
|
|
|
698
925
|
# 滅
|
|
699
926
|
notes['滅'] = '滅' if metsu == 2
|
|
700
927
|
|
|
701
928
|
# 月相
|
|
702
|
-
notes['月相']
|
|
703
|
-
|
|
929
|
+
unless notes['月相']
|
|
930
|
+
date = When.when?(dates.o_date.to_cal_date.to_s,
|
|
931
|
+
{:frame=>dates.o_date.frame,
|
|
932
|
+
:clock=>dates.l_date.frame.formula[-1].kind_of?(When::Ephemeris::ChineseTrueLunation) ?
|
|
933
|
+
When.Clock(-21600) : dates.l_date.frame.time_basis})
|
|
934
|
+
range = dates.cal4note.l_phases.formula.thiti_range(date)
|
|
935
|
+
notes['月相'] = if range
|
|
936
|
+
range.include?( 7.5) ? '上弦' :
|
|
937
|
+
range.include?(15.0) ? '望' :
|
|
938
|
+
range.include?(22.5) ? '下弦' : nil
|
|
939
|
+
else
|
|
940
|
+
dates.o_date.frame.kind_of?(When::CalendarTypes::Julian) ? '朔' : nil
|
|
941
|
+
end
|
|
942
|
+
end
|
|
704
943
|
|
|
705
944
|
# 月食
|
|
706
945
|
notes['月食'] = nil # 計算できないので、偽としておく
|
|
@@ -711,10 +950,15 @@ class When::CalendarTypes::CalendarNote
|
|
|
711
950
|
#
|
|
712
951
|
# 太陽黄経による暦注
|
|
713
952
|
#
|
|
714
|
-
class SolarTerms <
|
|
953
|
+
class JapaneseNote::SolarTerms < SolarTerms
|
|
715
954
|
|
|
716
955
|
Notes12 = %w(正月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月)
|
|
717
956
|
|
|
957
|
+
Notes10 = [
|
|
958
|
+
%w(初伏 初伏),
|
|
959
|
+
%w(仲伏 中伏),
|
|
960
|
+
%w(後伏 末伏)]
|
|
961
|
+
|
|
718
962
|
Notes60_A = [
|
|
719
963
|
# +0
|
|
720
964
|
'侯小過外', # 315 : 正月
|
|
@@ -723,242 +967,329 @@ class When::CalendarTypes::CalendarNote
|
|
|
723
967
|
'侯旅外', # 45 : 四月
|
|
724
968
|
'侯大有外', # 75 : 五月
|
|
725
969
|
'侯鼎外', # 105 : 六月
|
|
726
|
-
'
|
|
970
|
+
'侯恆外', # 135 : 七月
|
|
727
971
|
'侯巽外', # 165 : 八月
|
|
728
|
-
'
|
|
729
|
-
'
|
|
730
|
-
'
|
|
972
|
+
'侯歸妹外', # 195 : 九月
|
|
973
|
+
'侯艮外', # 225 : 十月
|
|
974
|
+
'侯未濟外', # 255 : 十一月
|
|
731
975
|
'侯屯外' # 285 : 十二月
|
|
732
976
|
]
|
|
733
977
|
|
|
734
978
|
Notes60_B = [
|
|
735
979
|
# +3 +9 +15 +21 +27
|
|
736
980
|
'大夫蒙', '卿益', '公漸', '辟泰', '侯需内', # 315 : 正月
|
|
737
|
-
'大夫随', '卿晋', '公解', '
|
|
981
|
+
'大夫随', '卿晋', '公解', '辟大壯', '侯豫内', # 345 : 二月
|
|
738
982
|
'大夫訟', '卿蠱', '公革', '辟夬', '侯旅内', # 15 : 三月
|
|
739
983
|
'大夫師', '卿比', '公小畜', '辟乾', '侯大有内', # 45 : 四月
|
|
740
|
-
'大夫家人', '卿井', '公咸', '
|
|
741
|
-
'大夫豊', '卿渙', '公履', '
|
|
984
|
+
'大夫家人', '卿井', '公咸', '辟姤', '侯鼎内', # 75 : 五月
|
|
985
|
+
'大夫豊', '卿渙', '公履', '辟遯', '侯恆内', # 105 : 六月
|
|
742
986
|
'大夫節', '卿同人', '公損', '辟否', '侯巽内', # 135 : 七月
|
|
743
|
-
'大夫萃', '卿大畜', '公賁', '辟観', '
|
|
744
|
-
'大夫無妄', '卿明夷', '
|
|
745
|
-
'
|
|
987
|
+
'大夫萃', '卿大畜', '公賁', '辟観', '侯歸妹内', # 165 : 八月
|
|
988
|
+
'大夫無妄', '卿明夷', '公困', '辟剥', '侯艮内', # 195 : 九月
|
|
989
|
+
'大夫既濟', '卿噬嗑', '公大過', '辟坤', '侯未濟内', # 225 : 十月
|
|
746
990
|
'大不蹇', '卿頤', '公中孚', '辟復', '侯屯内', # 255 : 十一月
|
|
747
991
|
'大夫謙', '卿睽', '公升', '辟臨', '侯小過内' # 285 : 十二月
|
|
748
992
|
]
|
|
749
993
|
|
|
750
994
|
Notes72 = [
|
|
751
|
-
# 宣明暦(中国) 宣明暦 貞享暦 宝暦暦・寛政暦 略本暦
|
|
995
|
+
# 儀鳳暦 宣明暦(中国) 宣明暦 貞享暦 宝暦暦・寛政暦 略本暦
|
|
752
996
|
# 315 : 正月
|
|
753
|
-
%w(東風解凍 東風解凍 東風解凍 東風解凍 東風解凍),
|
|
754
|
-
%w(蟄始振 蟄虫始振 梅花乃芳 黄鶯睍睆 黄鶯睍睆),
|
|
755
|
-
%w(魚上氷 魚上氷 魚上氷 魚上氷 魚上氷),
|
|
756
|
-
%w(獺祭魚 獺祭魚 土脈潤起 土脈潤起 土脉潤起),
|
|
757
|
-
%w(鴻雁来 鴻雁来 霞彩碧空 霞始靆 霞始靆),
|
|
758
|
-
%w(草木萌動 草木萌動 草木萌動 草木萌動 草木萌動),
|
|
997
|
+
%w(雞始乳 東風解凍 東風解凍 東風解凍 東風解凍 東風解凍),
|
|
998
|
+
%w(東風解凍 蟄始振 蟄虫始振 梅花乃芳 黄鶯睍睆 黄鶯睍睆),
|
|
999
|
+
%w(蟄蟲始振 魚上氷 魚上氷 魚上氷 魚上氷 魚上氷),
|
|
1000
|
+
%w(魚上冰 獺祭魚 獺祭魚 土脈潤起 土脈潤起 土脉潤起),
|
|
1001
|
+
%w(獺祭魚 鴻雁来 鴻雁来 霞彩碧空 霞始靆 霞始靆),
|
|
1002
|
+
%w(鴻雁來 草木萌動 草木萌動 草木萌動 草木萌動 草木萌動),
|
|
759
1003
|
|
|
760
1004
|
# 345 : 二月
|
|
761
|
-
%w(桃始華 桃始華 蟄虫啓戸 蟄虫啓戸 蟄虫啓戸),
|
|
762
|
-
%w(倉庚鳴 倉庚鳴 寒雨間熟 桃始笑 桃始笑),
|
|
763
|
-
%w(
|
|
764
|
-
%w(玄鳥至 玄鳥至 雀始巣 雀始巣 雀始巣),
|
|
765
|
-
%w(
|
|
766
|
-
%w(始電 始電 桜始開桃始笑 雷乃発声 雷乃発声),
|
|
1005
|
+
%w(始雨水 桃始華 桃始華 蟄虫啓戸 蟄虫啓戸 蟄虫啓戸),
|
|
1006
|
+
%w(桃始花 倉庚鳴 倉庚鳴 寒雨間熟 桃始笑 桃始笑),
|
|
1007
|
+
%w(倉庚鳴 鷹化爲鳩 鷹化爲鳩 菜虫化蝶 菜虫化蝶 菜虫化蝶),
|
|
1008
|
+
%w(鷹化爲鳩 玄鳥至 玄鳥至 雀始巣 雀始巣 雀始巣),
|
|
1009
|
+
%w(玄鳥至 雷乃發聲 雷乃發聲 雷乃発声 桜始開 桜始開),
|
|
1010
|
+
%w(雷始發聲 始電 始電 桜始開桃始笑 雷乃発声 雷乃発声),
|
|
767
1011
|
|
|
768
1012
|
# 15 : 三月
|
|
769
|
-
%w(桐始華 桐始華 玄鳥至 玄鳥至 玄鳥至),
|
|
770
|
-
%w(
|
|
771
|
-
%w(虹始見 虹始見 虹始見 虹始見 虹始見),
|
|
772
|
-
%w(萍始生 萍始生 葭始生 葭始生 葭始生),
|
|
773
|
-
%w(
|
|
774
|
-
%w(
|
|
1013
|
+
%w(始雷 桐始華 桐始華 玄鳥至 玄鳥至 玄鳥至),
|
|
1014
|
+
%w(蟄蟲咸動 田鼠化爲鴑 田鼠化爲鴑 鴻雁北 鴻雁北 鴻雁北),
|
|
1015
|
+
%w(蟄蟲啓戸 虹始見 虹始見 虹始見 虹始見 虹始見),
|
|
1016
|
+
%w(桐始華 萍始生 萍始生 葭始生 葭始生 葭始生),
|
|
1017
|
+
%w(田鼠化爲鴑 鳴鳩拂其羽 鳴鳩拂其羽 牡丹華 霜止出苗 霜止出苗),
|
|
1018
|
+
%w(虹始見 戴勝降于桑 戴勝降于桑 霜止出苗 牡丹華 牡丹華),
|
|
775
1019
|
|
|
776
1020
|
# 45 : 四月
|
|
777
|
-
%w(螻蟈鳴 螻蟈鳴 鵑始鳴 鼃始鳴 鼃始鳴),
|
|
778
|
-
%w(蚯蚓出 蚯蚓出 蚯蚓出 蚯蚓出 蚯蚓出),
|
|
779
|
-
%w(王瓜生 王瓜生 竹笋生 竹笋生 竹笋生),
|
|
780
|
-
%w(苦菜秀 苦菜秀 蚕起食桑 蚕起食桑 蚕起食桑),
|
|
781
|
-
%w(靡草死 靡草死 紅花栄 紅花栄 紅花栄),
|
|
782
|
-
%w(小暑至 小暑至 麦秋至 麦秋至 麦秋至),
|
|
783
|
-
|
|
1021
|
+
%w(萍始生 螻蟈鳴 螻蟈鳴 鵑始鳴 鼃始鳴 鼃始鳴),
|
|
1022
|
+
%w(戴勝降于桑 蚯蚓出 蚯蚓出 蚯蚓出 蚯蚓出 蚯蚓出),
|
|
1023
|
+
%w(螻蟈鳴 王瓜生 王瓜生 竹笋生 竹笋生 竹笋生),
|
|
1024
|
+
%w(蚯蚓出 苦菜秀 苦菜秀 蚕起食桑 蚕起食桑 蚕起食桑),
|
|
1025
|
+
%w(王瓜生 靡草死 靡草死 紅花栄 紅花栄 紅花栄),
|
|
1026
|
+
%w(苦菜秀 小暑至 小暑至 麦秋至 麦秋至 麦秋至),
|
|
1027
|
+
|
|
784
1028
|
# 75 : 五月
|
|
785
|
-
%w(
|
|
786
|
-
%w(鵙始鳴 鵙始鳴 腐草為螢 腐草為螢 腐草為螢),
|
|
787
|
-
%w(
|
|
788
|
-
%w(鹿角解 鹿角解 乃東枯 乃東枯 乃東枯),
|
|
789
|
-
%w(
|
|
790
|
-
%w(半夏生 半夏生 半夏生 半夏生 半夏生),
|
|
1029
|
+
%w(靡草死 螳蜋生 螳蜋生 螳螂生 螳螂生 螳螂生),
|
|
1030
|
+
%w(小暑至 鵙始鳴 鵙始鳴 腐草為螢 腐草為螢 腐草為螢),
|
|
1031
|
+
%w(螳螂生 反舌無聲 反舌無聲 梅始黄 梅子黄 梅子黄),
|
|
1032
|
+
%w(鵙始鳴 鹿角解 鹿角解 乃東枯 乃東枯 乃東枯),
|
|
1033
|
+
%w(反舌無聲 蜩始鳴 蜩始鳴 分龍雨 菖蒲華 菖蒲華),
|
|
1034
|
+
%w(鹿角解 半夏生 半夏生 半夏生 半夏生 半夏生),
|
|
791
1035
|
|
|
792
1036
|
# 105 : 六月
|
|
793
|
-
%w(温風至 温風至 温風至 温風至 温風至),
|
|
794
|
-
%w(蟋蟀居壁 蟋蟀居壁 蓮始華 蓮始華 蓮始開),
|
|
795
|
-
%w(
|
|
796
|
-
%w(
|
|
797
|
-
%w(土潤溽暑 土潤溽暑 土潤溽暑 土潤溽暑 土潤溽暑),
|
|
798
|
-
%w(大雨時行 大雨時行 大雨時行 大雨時行 大雨時行),
|
|
1037
|
+
%w(蟬始鳴 温風至 温風至 温風至 温風至 温風至),
|
|
1038
|
+
%w(半夏生 蟋蟀居壁 蟋蟀居壁 蓮始華 蓮始華 蓮始開),
|
|
1039
|
+
%w(木槿榮 鷹乃學習 鷹乃學習 鷹乃学習 鷹乃学習 鷹乃学習),
|
|
1040
|
+
%w(温風至 腐草爲螢 腐草爲螢 桐始結花 桐始結花 桐始結花),
|
|
1041
|
+
%w(蟋蟀居壁 土潤溽暑 土潤溽暑 土潤溽暑 土潤溽暑 土潤溽暑),
|
|
1042
|
+
%w(鷹乃學習 大雨時行 大雨時行 大雨時行 大雨時行 大雨時行),
|
|
799
1043
|
|
|
800
1044
|
# 135 : 七月
|
|
801
|
-
%w(涼風至 涼風至 涼風至 涼風至 涼風至),
|
|
802
|
-
%w(白露降 白露降 山沢浮雲 寒蝉鳴 寒蝉鳴),
|
|
803
|
-
%w(
|
|
804
|
-
%w(鷹乃祭鳥 鷹乃祭鳥 寒蝉鳴 綿柎開 綿柎開),
|
|
805
|
-
%w(
|
|
806
|
-
%w(禾乃登 禾乃登 禾乃登 禾乃登 禾乃登),
|
|
1045
|
+
%w(腐草爲螢 涼風至 涼風至 涼風至 涼風至 涼風至),
|
|
1046
|
+
%w(土潤溽暑 白露降 白露降 山沢浮雲 寒蝉鳴 寒蝉鳴),
|
|
1047
|
+
%w(涼風至 寒蟬鳴 寒蟬鳴 霧色已成 蒙霧升降 蒙霧升降),
|
|
1048
|
+
%w(白露降 鷹乃祭鳥 鷹乃祭鳥 寒蝉鳴 綿柎開 綿柎開),
|
|
1049
|
+
%w(寒蟬鳴 天地始肅 天地始肅 天地始粛 天地始粛 天地始粛),
|
|
1050
|
+
%w(鷹祭鳥 禾乃登 禾乃登 禾乃登 禾乃登 禾乃登),
|
|
807
1051
|
|
|
808
1052
|
# 165 : 八月
|
|
809
|
-
%w(鴻雁来 鴻雁来 草露白 草露白 草露白),
|
|
810
|
-
%w(
|
|
811
|
-
%w(群鳥養羞 群鳥養羞 玄鳥去 玄鳥去 玄鳥去),
|
|
812
|
-
%w(
|
|
813
|
-
%w(
|
|
814
|
-
%w(水始涸 水始涸 水始涸 水始涸 水始涸),
|
|
1053
|
+
%w(天地始肅 鴻雁来 鴻雁来 草露白 草露白 草露白),
|
|
1054
|
+
%w(暴風至 玄鳥歸 玄鳥歸 鶺鴒鳴 鶺鴒鳴 鶺鴒鳴),
|
|
1055
|
+
%w(鴻雁來 群鳥養羞 群鳥養羞 玄鳥去 玄鳥去 玄鳥去),
|
|
1056
|
+
%w(玄鳥歸 雷乃收聲 雷乃收聲 鴻雁来 雷乃収声 雷乃収声),
|
|
1057
|
+
%w(羣鳥養羞 蟄蟲坏戸 蟄蟲坏戸 蟄虫坏戸 蟄虫坏戸 蟄虫坏戸),
|
|
1058
|
+
%w(雷始收聲 水始涸 水始涸 水始涸 水始涸 水始涸),
|
|
815
1059
|
|
|
816
1060
|
# 195 : 九月
|
|
817
|
-
%w(
|
|
818
|
-
%w(
|
|
819
|
-
%w(菊有黄花 菊有黄花 菊花開 蟋蟀在戸 蟋蟀在戸),
|
|
820
|
-
%w(
|
|
821
|
-
%w(草木黄落 草木黄落 蔦楓紅葉 霎時施 霎時施),
|
|
822
|
-
%w(
|
|
1061
|
+
%w(蟄蟲坏戸 鴻雁來賓 鴻雁來賓 棗栗零 鴻雁来 鴻雁来),
|
|
1062
|
+
%w(陰氣方盛 雀入大水爲蛤 雀入大水爲蛤 蟋蟀在戸 菊花開 菊花開),
|
|
1063
|
+
%w(陽氣始衰 菊有黄花 菊有黄花 菊花開 蟋蟀在戸 蟋蟀在戸),
|
|
1064
|
+
%w(水始涸 豺乃祭獸 豺乃祭獸 霜始降 霜始降 霜始降),
|
|
1065
|
+
%w(鴻雁來賓 草木黄落 草木黄落 蔦楓紅葉 霎時施 霎時施),
|
|
1066
|
+
%w(雀入水爲蛤 蟄蟲咸俯 蟄蟲咸俯 鶯雛鳴 楓蔦黄 楓蔦黄),
|
|
823
1067
|
|
|
824
1068
|
# 225 : 十月
|
|
825
|
-
%w(
|
|
826
|
-
%w(地始凍 地始凍 地始凍 地始凍 地始凍),
|
|
827
|
-
%w(
|
|
828
|
-
%w(
|
|
829
|
-
%w(
|
|
830
|
-
%w(閉塞而成冬
|
|
1069
|
+
%w(菊有黄花 水始冰 水始冰 山茶始開 山茶始開 山茶始開),
|
|
1070
|
+
%w(豺祭獣 地始凍 地始凍 地始凍 地始凍 地始凍),
|
|
1071
|
+
%w(水始冰 野雞入大水爲蜃 野雞入大水爲蜃 霎乃降 金盞香 金盞香),
|
|
1072
|
+
%w(地始凍 虹藏不見 虹藏不見 虹蔵不見 虹蔵不見 虹蔵不見),
|
|
1073
|
+
%w(野雞入水爲蜃 天氣上騰地氣下降 天氣上騰地氣下降 樹葉咸落 朔風払葉 朔風払葉),
|
|
1074
|
+
%w(虹藏不見 閉塞而成冬 閉塞而成冬 橘始黄 橘始黄 橘始黄),
|
|
831
1075
|
|
|
832
1076
|
# 255 : 十一月
|
|
833
|
-
%w(鶡鳥不鳴 鶡鳥不鳴 閉塞成冬 閉塞成冬 閉塞成冬),
|
|
834
|
-
%w(虎始交
|
|
835
|
-
%w(茘挺生 茘挺生 水仙開 鱖魚群 鱖魚群),
|
|
836
|
-
%w(蚯蚓結 蚯蚓結 乃東生 乃東生 乃東生),
|
|
837
|
-
%w(麋角解 麋角解 麋角解 麋角解 麋角解),
|
|
838
|
-
%w(水泉動 水泉動 雪下出麦 雪下出麦 雪下出麦),
|
|
1077
|
+
%w(冰益壯 鶡鳥不鳴 鶡鳥不鳴 閉塞成冬 閉塞成冬 閉塞成冬),
|
|
1078
|
+
%w(地始坼 虎始交 虎始交 熊蟄穴 熊蟄穴 熊蟄穴),
|
|
1079
|
+
%w(鶡鳥不鳴 茘挺生 茘挺生 水仙開 鱖魚群 鱖魚群),
|
|
1080
|
+
%w(虎始交 蚯蚓結 蚯蚓結 乃東生 乃東生 乃東生),
|
|
1081
|
+
%w(芒始生 麋角解 麋角解 麋角解 麋角解 麋角解),
|
|
1082
|
+
%w(茘挺生 水泉動 水泉動 雪下出麦 雪下出麦 雪下出麦),
|
|
839
1083
|
|
|
840
1084
|
# 285 : 十二月
|
|
841
|
-
%w(
|
|
842
|
-
%w(鵲始巣 鵲始巣 風気乃行 水泉動 水泉動),
|
|
843
|
-
%w(
|
|
844
|
-
%w(
|
|
845
|
-
%w(鷙鳥厲疾 鷙鳥厲疾 水沢腹堅 水沢腹堅 水沢腹堅),
|
|
846
|
-
%w(
|
|
1085
|
+
%w(蚯蚓結 雁北郷 雁北郷 芹乃栄 芹乃栄 芹乃栄),
|
|
1086
|
+
%w(麋角解 鵲始巣 鵲始巣 風気乃行 水泉動 水泉動),
|
|
1087
|
+
%w(水泉動 野雞始鴝 野雞始鴝 雉始雊 雉始雊 雉始雊),
|
|
1088
|
+
%w(雁北郷 雞始乳 雞始乳 款冬華 款冬華 款冬華),
|
|
1089
|
+
%w(鵲始巣 鷙鳥厲疾 鷙鳥厲疾 水沢腹堅 水沢腹堅 水沢腹堅),
|
|
1090
|
+
%w(雉始雊 水澤腹堅 水澤腹堅 鶏始乳 鶏始乳 鶏始乳)
|
|
847
1091
|
]
|
|
848
1092
|
|
|
849
|
-
#
|
|
1093
|
+
# 計算結果の修正
|
|
850
1094
|
# @private
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
1095
|
+
Patch = {
|
|
1096
|
+
2039054 => [149.0, 1], # 貞観12(0870).07.17 [149.0, 0] 没
|
|
1097
|
+
2039055 => [150.0, 0], # 貞観12(0870).07.18 [150.0, 1] 処暑
|
|
1098
|
+
|
|
1099
|
+
2107233 => [ 29.0, 1], # 天喜05(1057).03.10 [ 29.0, 0] 没
|
|
1100
|
+
2107234 => [ 30.0, 0], # 天喜05(1057).03.11 [ 30.0, 1] 穀雨
|
|
1101
|
+
|
|
1102
|
+
2160437 => [269.0, 0], # 建仁02(1202).10=29 [270.0, 1] 冬至
|
|
1103
|
+
2160438 => [270.0, 1], # 建仁02(1202).11.01 [271.0, 1]
|
|
1104
|
+
2160439 => [271.0, 1], # 建仁02(1202).11.02 [272.0, 1]
|
|
1105
|
+
2160440 => [272.0, 1], # 建仁02(1202).11.03 [272.0, 0] 没
|
|
1106
|
+
|
|
1107
|
+
2175412 => [269.0, 1], # 寛元01(1243).11.03 [269.0, 0] 没
|
|
1108
|
+
2175413 => [270.0, 0], # 寛元01(1243).11.04 [270.0, 1] 冬至
|
|
1109
|
+
|
|
1110
|
+
2189200 => [179.0, 0], # 弘安04(1281).07=30 [180.0, 1] 秋分
|
|
1111
|
+
2189201 => [180.0, 1], # 弘安04(1281).08.01 [181.0, 1]
|
|
1112
|
+
2189202 => [181.0, 1], # 弘安04(1281).08.02 [181.0, 0] 没
|
|
1113
|
+
|
|
1114
|
+
2243577 => [136.0, 0], # 永享02(1430).07.11 [136.0, 1] (立秋の翌日)
|
|
1115
|
+
2243578 => [136.0, 1], # 永享02(1430).07.12 [137.0, 1]
|
|
1116
|
+
2243579 => [137.0, 1], # 永享02(1430).07.13 [138.0, 1]
|
|
1117
|
+
2243580 => [138.0, 1], # 永享02(1430).07.14 [139.0, 1]
|
|
1118
|
+
2243581 => [139.0, 1], # 永享02(1430).07.15 [140.0, 1]
|
|
1119
|
+
2243582 => [140.0, 1], # 永享02(1430).07.16 [141.0, 1]
|
|
1120
|
+
2243583 => [141.0, 1], # 永享02(1430).07.17 [142.0, 1]
|
|
1121
|
+
2243584 => [142.0, 1], # 永享02(1430).07.18 [143.0, 1]
|
|
1122
|
+
2243585 => [143.0, 1], # 永享02(1430).07.19 [144.0, 1]
|
|
1123
|
+
2243586 => [144.0, 1], # 永享02(1430).07.20 [145.0, 1]
|
|
1124
|
+
2243587 => [145.0, 1], # 永享02(1430).07.21 [146.0, 1]
|
|
1125
|
+
2243588 => [146.0, 1], # 永享02(1430).07.22 [147.0, 1]
|
|
1126
|
+
2243589 => [147.0, 1], # 永享02(1430).07.23 [148.0, 1]
|
|
1127
|
+
2243590 => [148.0, 1], # 永享02(1430).07.24 [149.0, 1]
|
|
1128
|
+
2243591 => [149.0, 1], # 永享02(1430).07.25 [149.0, 0] 没 (処暑の前日)
|
|
1129
|
+
|
|
1130
|
+
2311770 => [ 29.0, 1], # 元和03(1617).03.18 [ 29.0, 0] 没
|
|
1131
|
+
2311771 => [ 30.0, 0] # 元和03(1617).03.19 [ 30.0, 1] 穀雨
|
|
1132
|
+
}
|
|
855
1133
|
|
|
856
|
-
|
|
857
|
-
#
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
# 後 : 立秋から 0..9
|
|
861
|
-
if !notes['三伏'] && notes['干'].remainder == 6 # 庚
|
|
862
|
-
if 109 <= longitude && longitude <= 129 # 夏至から
|
|
863
|
-
term = dates.s_terms.term(date, [-270,360])
|
|
864
|
-
diff = dates.s_date.to_i - term.to_i
|
|
865
|
-
notes['三伏'] = '初伏' if 20 <= diff && diff <= 29
|
|
866
|
-
notes['三伏'] = '中伏' if 30 <= diff && diff <= 39
|
|
867
|
-
elsif longitude == 135 # 立秋
|
|
868
|
-
notes['三伏'] = '末伏'
|
|
869
|
-
elsif 136 <= longitude && longitude <= 144 # 立秋から
|
|
870
|
-
term = dates.s_terms.term(date, [-225,360])
|
|
871
|
-
diff = dates.s_date.to_i - term.to_i
|
|
872
|
-
notes['三伏'] = '末伏' if 0 < diff && diff <= 9
|
|
873
|
-
end
|
|
874
|
-
end
|
|
1134
|
+
class << self
|
|
1135
|
+
# テスト用の属性
|
|
1136
|
+
attr_writer :patch
|
|
1137
|
+
private :patch=
|
|
875
1138
|
|
|
876
|
-
#
|
|
877
|
-
#
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
1139
|
+
# 日の暦注
|
|
1140
|
+
# @private
|
|
1141
|
+
def _day_notes(notes, dates, conditions={})
|
|
1142
|
+
date = When.when?(dates.o_date.to_cal_date.to_s,
|
|
1143
|
+
{:frame=>dates.o_date.frame,
|
|
1144
|
+
:clock=>dates.s_date.frame.time_basis})
|
|
1145
|
+
patch = (@patch || Patch)[date.to_i] unless dates.o_date.frame.respond_to?(:twin) &&
|
|
1146
|
+
dates.o_date.frame.twin
|
|
1147
|
+
longitude, motsu = patch ? patch : dates.cal4note.s_terms.position(date)
|
|
1148
|
+
|
|
1149
|
+
# 三伏 - 庚
|
|
1150
|
+
#
|
|
1151
|
+
# 初 : 夏至から 20..29
|
|
1152
|
+
# 仲 : 夏至から 30..39
|
|
1153
|
+
# 後 : 立秋から 0..9
|
|
1154
|
+
if !notes['三伏'] && notes['干'].remainder == 6 # 庚
|
|
1155
|
+
index = dates.range >= 11 ? 1 : 0
|
|
1156
|
+
if 109 <= longitude && longitude <= 129 # 夏至から
|
|
1157
|
+
term = dates.cal4note.s_terms.term(date, [-270,360])
|
|
1158
|
+
diff = dates.s_date.to_i - term.to_i
|
|
1159
|
+
notes['三伏'] = Notes10[0][index] if 20 <= diff && diff <= 29
|
|
1160
|
+
notes['三伏'] = Notes10[1][index] if 30 <= diff && diff <= 39
|
|
1161
|
+
elsif longitude == 135 # 立秋
|
|
1162
|
+
notes['三伏'] = Notes10[2][index]
|
|
1163
|
+
elsif 136 <= longitude && longitude <= 144 # 立秋から
|
|
1164
|
+
term = dates.cal4note.s_terms.term(date, [-225,360])
|
|
1165
|
+
diff = dates.s_date.to_i - term.to_i
|
|
1166
|
+
notes['三伏'] = Notes10[2][index] if 0 < diff && diff <= 9
|
|
1167
|
+
end
|
|
884
1168
|
end
|
|
885
|
-
end
|
|
886
1169
|
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
1170
|
+
# 社 - 戊
|
|
1171
|
+
#
|
|
1172
|
+
# 春秋分から -5..4
|
|
1173
|
+
if !notes['社'] && notes['干'].remainder == 4 # 戊
|
|
1174
|
+
if (longitude + 5) % 180 < 10 # 春秋分の近傍
|
|
1175
|
+
term = dates.cal4note.s_terms.term(date - When.Duration('P5D'), [0,180])
|
|
1176
|
+
diff = dates.s_date.to_i - term.to_i
|
|
1177
|
+
notes['社'] = '社' if -5 <= diff && diff <= 4
|
|
1178
|
+
end
|
|
895
1179
|
end
|
|
896
|
-
end
|
|
897
1180
|
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
1181
|
+
# 臘 - 辰
|
|
1182
|
+
#
|
|
1183
|
+
# 大寒から -6..5
|
|
1184
|
+
if !notes['臘'] && notes['支'].remainder == 4 # 辰
|
|
1185
|
+
if (longitude - 339) % 360 < 12 # 大寒の近傍
|
|
1186
|
+
term = dates.cal4note.s_terms.term(date - When.Duration('P6D'), [345,360])
|
|
1187
|
+
diff = dates.s_date.to_i - term.to_i
|
|
1188
|
+
notes['臘'] = '臘' if -6 <= diff && diff <= 5
|
|
1189
|
+
end
|
|
906
1190
|
end
|
|
907
|
-
end
|
|
908
1191
|
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
1192
|
+
# 土用事
|
|
1193
|
+
unless notes['土用事']
|
|
1194
|
+
_longitude, _motsu = dates.cal4note.doyo ? dates.cal4note.s_terms.position(date, -dates.cal4note.doyo) :
|
|
1195
|
+
[longitude, motsu]
|
|
1196
|
+
if _motsu != 0 && _longitude % 90 == 27
|
|
1197
|
+
notes['土用事'] =
|
|
1198
|
+
case dates.range
|
|
1199
|
+
when 0 ; '土用' # 元嘉暦以前
|
|
1200
|
+
when 1 ; '土王' # 麟徳暦
|
|
1201
|
+
when 2..10 ; '土用事' # 大衍暦~宣明暦
|
|
1202
|
+
else ; '土用入' # 貞享暦以降
|
|
1203
|
+
end
|
|
1204
|
+
end
|
|
918
1205
|
end
|
|
919
|
-
end
|
|
920
1206
|
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
1207
|
+
# 入梅 - 壬
|
|
1208
|
+
#
|
|
1209
|
+
# 貞享2(1685)~ 芒種から 1..10 日の壬の日
|
|
1210
|
+
# 元文5(1740)~ 芒種から 0..9 日の壬の日
|
|
1211
|
+
# 明治9(1876)~ 太陽黄経80度
|
|
1212
|
+
unless notes['入梅']
|
|
1213
|
+
if dates.year >= 1876
|
|
1214
|
+
notes['入梅'] = '入梅' if longitude == 80 && motsu == 1
|
|
1215
|
+
elsif notes['干'].remainder == 8 # 壬
|
|
1216
|
+
if (longitude - 75) % 360 <= 10 # 芒種の近傍
|
|
1217
|
+
term = dates.cal4note.s_terms.term(date - When.Duration('P11D'), [75,360])
|
|
1218
|
+
diff = dates.s_date.to_i - term.to_i
|
|
1219
|
+
diff += 1 if dates.year >= 1740
|
|
1220
|
+
notes['入梅'] = '入梅' if dates.range >= 11 && 1 <= diff && diff <= 10
|
|
1221
|
+
end
|
|
1222
|
+
end
|
|
1223
|
+
end
|
|
926
1224
|
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
notes['節中'] ||= Notes12[div] + %w(節 中)[mod]
|
|
939
|
-
end
|
|
1225
|
+
# 立春を起算日とする雑節
|
|
1226
|
+
#
|
|
1227
|
+
unless notes['節分'] && notes['八十八夜'] && notes['二百十日'] && notes['二百廿日']
|
|
1228
|
+
term = dates.cal4note.s_terms.term(date + When.Duration('P3D'), [-45,360])
|
|
1229
|
+
case dates.s_date.to_i - term.to_i
|
|
1230
|
+
when -1 ; notes['節分'] ||= '節分'
|
|
1231
|
+
when 87 ; notes['八十八夜'] ||= '八十八夜'
|
|
1232
|
+
when 209 ; notes['二百十日'] ||= '二百十日'
|
|
1233
|
+
when 219 ; notes['二百廿日'] ||= '二百廿日'
|
|
1234
|
+
end
|
|
1235
|
+
end
|
|
940
1236
|
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
notes['六十卦'] ||= mod == 15 ? Notes60_A[(div - 10) % 12] : nil
|
|
944
|
-
div, mod = longitude.divmod(6)
|
|
945
|
-
notes['六十卦'] ||= mod == 0 ? Notes60_B[(div - 53) % 60] : nil
|
|
1237
|
+
# 日食
|
|
1238
|
+
notes['日食'] = nil # 計算できないので、偽としておく
|
|
946
1239
|
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
1240
|
+
# 没
|
|
1241
|
+
if motsu == 0
|
|
1242
|
+
notes['没'] = '没' if dates.range < 11
|
|
1243
|
+
return notes unless patch
|
|
1244
|
+
end
|
|
950
1245
|
|
|
951
|
-
|
|
952
|
-
|
|
1246
|
+
# 廿四節気
|
|
1247
|
+
div, mod = longitude.divmod(15)
|
|
1248
|
+
if mod == 0
|
|
1249
|
+
notes['廿四節気'] = (div - 21) % 24
|
|
1250
|
+
div, mod = notes['廿四節気'].divmod(2)
|
|
1251
|
+
notes['節中'] ||= Notes12[div] + %w(節 中)[mod]
|
|
1252
|
+
end
|
|
953
1253
|
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
1254
|
+
# 七十二候
|
|
1255
|
+
div, mod = longitude.divmod(5)
|
|
1256
|
+
notes['七十二候'] ||= mod == 0 ? Notes72[(div - 63) % 72][dates.index_s] : nil
|
|
1257
|
+
|
|
1258
|
+
# 往亡
|
|
1259
|
+
month = dates.s_date.cal_date[1] - 1
|
|
1260
|
+
div, mod = month.divmod(3)
|
|
1261
|
+
notes['往亡'] ||= ((div+7)*(mod+1) + month * 30 + 314 - longitude) % 360 == 0 ? '往亡' : nil
|
|
1262
|
+
|
|
1263
|
+
# 伏龍
|
|
1264
|
+
notes['伏龍'] ||= {
|
|
1265
|
+
315 => '庭内去堂', 15 => '門内百日', 115 => '東垣六十日',
|
|
1266
|
+
175 => '四隅百日', 275 => '竈内四十日'
|
|
1267
|
+
}[longitude]
|
|
1268
|
+
|
|
1269
|
+
# 六十卦
|
|
1270
|
+
div, mod = longitude.divmod(30)
|
|
1271
|
+
notes['六十卦'] ||= mod == 15 ? Notes60_A[(div - 10) % 12] : nil
|
|
1272
|
+
div, mod = longitude.divmod(6)
|
|
1273
|
+
notes['六十卦'] ||= mod == 0 ? Notes60_B[(div - 53) % 60] : nil
|
|
1274
|
+
|
|
1275
|
+
# 彼岸
|
|
1276
|
+
unless notes['彼岸']
|
|
1277
|
+
if dates.range < 11
|
|
1278
|
+
notes['彼岸'] = '彼岸' if longitude % 180 == 2 # 宣明暦以前(没を除いて3日後)
|
|
1279
|
+
else
|
|
1280
|
+
term = dates.cal4note.s_terms.term(date - When.Duration('P7D'), [0,180]) # 近傍の春秋分
|
|
1281
|
+
case dates.s_date.to_i - term.to_i
|
|
1282
|
+
when 2 ; notes['彼岸'] = '彼岸' if dates.range == 11 # 貞享暦(没を含めて3日後)
|
|
1283
|
+
when -5 ; notes['彼岸'] = '彼岸' if longitude > 180 && (1755...1844).include?(dates.year) # 宝暦暦・寛政暦(春-6日前))
|
|
1284
|
+
when -1 ; notes['彼岸'] = '彼岸' if longitude <= 180 && (1755...1844).include?(dates.year) # 宝暦暦・寛政暦(秋-2日前)
|
|
1285
|
+
when -3 ; notes['彼岸'] = '彼岸' if dates.year >= 1844 # 天保暦以降(秋-4日前)
|
|
1286
|
+
end
|
|
1287
|
+
end
|
|
1288
|
+
notes['彼岸'] = nil unless notes['彼岸'] == '彼岸'
|
|
1289
|
+
end
|
|
958
1290
|
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
notes
|
|
1291
|
+
notes
|
|
1292
|
+
end
|
|
962
1293
|
end
|
|
963
1294
|
end
|
|
964
1295
|
end
|