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