when_exe 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +36 -33
  3. data/bin/locales.rb +1 -1
  4. data/bin/make_ttl.rb.config +1 -1
  5. data/lib/when_exe.rb +27 -16
  6. data/lib/when_exe/basictypes.rb +772 -771
  7. data/lib/when_exe/calendartypes.rb +1485 -1453
  8. data/lib/when_exe/coordinates.rb +5 -0
  9. data/lib/when_exe/core/compatibility.rb +1 -1
  10. data/lib/when_exe/core/duration.rb +147 -116
  11. data/lib/when_exe/core/extension.rb +499 -497
  12. data/lib/when_exe/ephemeris.rb +1952 -1951
  13. data/lib/when_exe/ephemeris/eclipse.rb +5 -4
  14. data/lib/when_exe/ephemeris/notes.rb +457 -421
  15. data/lib/when_exe/ephemeris/planets.rb +585 -585
  16. data/lib/when_exe/ephemeris/sun.rb +214 -214
  17. data/lib/when_exe/google_api.rb +153 -0
  18. data/lib/when_exe/icalendar.rb +1640 -1632
  19. data/lib/when_exe/inspect.rb +42 -20
  20. data/lib/when_exe/linkeddata.rb +28 -7
  21. data/lib/when_exe/locales/autoload.rb +2 -1
  22. data/lib/when_exe/locales/locale.rb +35 -15
  23. data/lib/when_exe/locales/zh.rb +77 -0
  24. data/lib/when_exe/mini_application.rb +3 -1
  25. data/lib/when_exe/{googlecalendar.rb → obsolete/googlecalendar.rb} +144 -144
  26. data/lib/when_exe/parts/enumerator.rb +498 -486
  27. data/lib/when_exe/parts/geometric_complex.rb +397 -397
  28. data/lib/when_exe/parts/timezone.rb +246 -241
  29. data/lib/when_exe/region/armenian.rb +55 -56
  30. data/lib/when_exe/region/babylonian.rb +406 -405
  31. data/lib/when_exe/region/bahai.rb +107 -106
  32. data/lib/when_exe/region/balinese.rb +624 -622
  33. data/lib/when_exe/region/chinese.rb +1071 -1026
  34. data/lib/when_exe/region/chinese/epochs.rb +28 -28
  35. data/lib/when_exe/region/chinese/notes.rb +219 -0
  36. data/lib/when_exe/region/chinese/twins.rb +803 -803
  37. data/lib/when_exe/region/christian.rb +21 -15
  38. data/lib/when_exe/region/coptic.rb +107 -106
  39. data/lib/when_exe/region/discordian.rb +218 -218
  40. data/lib/when_exe/region/east_asian.rb +1 -1
  41. data/lib/when_exe/region/french.rb +126 -56
  42. data/lib/when_exe/region/geologicalage.rb +639 -639
  43. data/lib/when_exe/region/goddess.rb +60 -58
  44. data/lib/when_exe/region/hanke_henry.rb +2 -2
  45. data/lib/when_exe/region/indian.rb +1225 -1222
  46. data/lib/when_exe/region/international_fixed.rb +96 -97
  47. data/lib/when_exe/region/iranian.rb +206 -203
  48. data/lib/when_exe/region/islamic.rb +102 -102
  49. data/lib/when_exe/region/japanese.rb +126 -71
  50. data/lib/when_exe/region/japanese/epochs.rb +426 -426
  51. data/lib/when_exe/region/japanese/notes.rb +101 -81
  52. data/lib/when_exe/region/japanese/residues.rb +1345 -1311
  53. data/lib/when_exe/region/japanese/twins.rb +225 -225
  54. data/lib/when_exe/region/japanese/weeks.rb +112 -112
  55. data/lib/when_exe/region/javanese.rb +230 -230
  56. data/lib/when_exe/region/jewish.rb +130 -131
  57. data/lib/when_exe/region/m17n.rb +114 -114
  58. data/lib/when_exe/region/martian.rb +258 -258
  59. data/lib/when_exe/region/mayan.rb +11 -8
  60. data/lib/when_exe/region/pax.rb +4 -5
  61. data/lib/when_exe/region/pope.rb +1 -1
  62. data/lib/when_exe/region/positivist.rb +100 -100
  63. data/lib/when_exe/region/residue.rb +162 -162
  64. data/lib/when_exe/region/roman.rb +333 -333
  65. data/lib/when_exe/region/{soviet.rb → russian.rb} +221 -209
  66. data/lib/when_exe/region/shire.rb +222 -223
  67. data/lib/when_exe/region/symmetry.rb +50 -50
  68. data/lib/when_exe/region/thai.rb +336 -336
  69. data/lib/when_exe/region/tibetan.rb +315 -316
  70. data/lib/when_exe/region/tranquility.rb +207 -208
  71. data/lib/when_exe/region/vanishing_leprechaun.rb +3 -1
  72. data/lib/when_exe/region/vietnamese.rb +449 -440
  73. data/lib/when_exe/region/weekdate.rb +80 -80
  74. data/lib/when_exe/region/world.rb +170 -171
  75. data/lib/when_exe/region/world_season.rb +89 -89
  76. data/lib/when_exe/region/yerm.rb +3 -3
  77. data/lib/when_exe/region/zoroastrian.rb +205 -205
  78. data/lib/when_exe/timestandard.rb +708 -707
  79. data/lib/when_exe/tmduration.rb +338 -338
  80. data/lib/when_exe/tmobjects.rb +1356 -1356
  81. data/lib/when_exe/tmposition.rb +66 -31
  82. data/lib/when_exe/version.rb +16 -2
  83. data/test/examples/Residue.m17n +83 -83
  84. data/test/examples/Terms.m17n +2 -2
  85. data/test/test.rb +2 -2
  86. data/test/test/google_api.rb +65 -0
  87. data/test/test/linkeddata.rb +1 -1
  88. data/test/test/{googlecalendar.rb → obsolete/googlecalendar.rb} +194 -194
  89. data/test/test/region/indian.rb +90 -85
  90. data/test/test/region/m17n.rb +7 -7
  91. data/test/test/region/mayan.rb +195 -195
  92. data/test/test/region/residue.rb +153 -153
  93. data/test/test/tmposition.rb +11 -1
  94. data/when_exe.gemspec +2 -2
  95. metadata +95 -8
  96. data/test/test.rb.config +0 -1
@@ -10,22 +10,28 @@ module When
10
10
  class BasicTypes::M17n
11
11
 
12
12
  Christian = [self, [
13
- "locale:[=en:, ja=ja:, alias]",
14
- "names:[Christian=]",
15
- "[Julian=en:Julian_calendar, ユリウス暦 ]",
16
- "[Gregorian=en:Gregorian_calendar, グレゴリオ暦 ]",
17
- "[RevisedJulian=en:Revised_Julian_calendar, 修正ユリウス暦]",
18
- "[Swedish=en:Swedish_calendar, スウェーデン暦]",
19
- "[Civil in the West=en:Civil_calendar, 西暦, *alias:Civil]"
13
+ "namespace:[wiki=http://www2u.biglobe.ne.jp/~suchowan/wiki/]",
14
+ "locale:[=en:, ja=ja:, zh=zh:, kr=ko:, kp=ko:, ko=ko:, alias]",
15
+ "names:[Christian=en:Christianity, キリスト教, 基督教]",
16
+ "[Julian=en:Julian_calendar, ユリウス暦 , 儒略曆, era:J]",
17
+ "[Gregorian=en:Gregorian_calendar, グレゴリオ暦 , 格里曆, era:G]",
18
+ "[RevisedJulian=en:Revised_Julian_calendar, 修正ユリウス暦, 儒略改革曆]",
19
+ "[Swedish=en:Swedish_calendar, スウェーデン暦, 瑞典曆]",
20
+ "[Customizable Western=wiki:pref_examples_en.html," +
21
+ "西暦(カスタマイズ可能)=wiki:pref_examples.html," +
22
+ "西元(可定制)=wiki:pref_examples.html," +
23
+ "서력기원(사용자정의)=wiki:pref_examples.html," +
24
+ "서력기원(사용자정의)=wiki:pref_examples.html," +
25
+ "서력기원(사용자정의)=wiki:pref_examples.html, *alias:Civil]"
20
26
  ]]
21
27
  end
22
28
 
23
29
  class TM::CalendarEra
24
30
  # Anno Mundi Era
25
31
  Byzantine = [self, [
26
- "locale:[=en:, ja=ja:, alias]",
27
- "period:[Byzantine=en:Byzantine_calendar, ビザンティン暦=ja:%%<世界創造紀元>]",
28
- ["[AM=en:Anno_Mundi, 世界創造紀元, alias:Anno_Mundi]6497*9.1",
32
+ "locale:[=en:, ja=ja:, zh=zh:, alias]",
33
+ "period:[Byzantine=en:Byzantine_calendar, ビザンティン暦=ja:%%<世界創造紀元>, 拜占庭曆=]",
34
+ ["[AM=en:Anno_Mundi, 世界創造紀元, 世界創造紀元=en:Anno_Mundi, alias:Anno_Mundi]6497*9.1",
29
35
  '@CE', "989*09-01^Julian?border=0*9-1&note=Roman", "1453-5-29"]
30
36
  ]]
31
37
  end
@@ -542,24 +548,24 @@ module When
542
548
 
543
549
  Notes = [When::BasicTypes::M17n, [
544
550
  "locale:[=en:, ja=ja:, alias]",
545
- "names:[Christian]",
551
+ "names:[Christian=en:Christianity, キリスト教]",
546
552
 
547
553
  # 年の暦注 ----------------------------
548
554
  [When::BasicTypes::M17n,
549
- "names:[year]"
555
+ "names:[note for year=, 年の暦注=, *year]"
550
556
  ],
551
557
 
552
558
  # 月の暦注 ----------------------------
553
559
  [When::BasicTypes::M17n,
554
- "names:[month]",
560
+ "names:[note for month=, 月の暦注=, *month]",
555
561
  [When::BasicTypes::M17n,
556
- "names:[Month]"
562
+ "names:[month name=en:Month, 月の名前=ja:%%<月_(暦)>, zh:該月的名稱=, *alias:Month=]"
557
563
  ]
558
564
  ],
559
565
 
560
566
  # 日の暦注 ----------------------------
561
567
  [When::BasicTypes::M17n,
562
- "names:[day]",
568
+ "names:[note for day=, 日の暦注=, *day]",
563
569
  [When::BasicTypes::M17n, "names:[Week, 七曜]" ],
564
570
  [When::BasicTypes::M17n, "names:[Easter, 復活祭]" ],
565
571
  [When::BasicTypes::M17n, "names:[Christmas, クリスマス]"],
@@ -1,106 +1,107 @@
1
- # -*- coding: utf-8 -*-
2
- =begin
3
- Copyright (C) 2011-2014 Takashi SUGA
4
-
5
- You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
6
- =end
7
-
8
- module When
9
-
10
- class BasicTypes::M17n
11
-
12
- Coptic = [self, [
13
- "locale:[=en:, ja=ja:, alias]",
14
- "names:[Coptic=]",
15
- "[Coptic=en:Coptic_calendar, コプト暦 ]",
16
- "[Ethiopian=en:Ethiopian_calendar, エチオピア暦=en:Ethiopian_calendar]",
17
- "[Ptolemaic=en:Ptolemaic_dynasty, プトレマイオス朝]",
18
-
19
- # Remarks
20
- '[based on Chris Bennett "Egyptian Dates" (Retrieved 2014-06-29)=http://www.tyndalehouse.com/Egypt/ptolemies/chron/egyptian/chron_eg_intro.htm,' +
21
- '典拠 - Chris Bennett "Egyptian Dates" (2014-06-29 閲覧)=]',
22
-
23
- [self,
24
- "names:[EgyptianMonth=, 月=ja:%%<月_(暦)>]",
25
- "[tut=, トート= ]",
26
- "[baba=, バーバ= ]",
27
- "[hatur=, ハートール= ]",
28
- "[kiyahak=, キヤハーク= ]",
29
- "[tuba=, トーバ= ]",
30
- "[amshir=, アムシール= ]",
31
- "[baramhat=, バラムハート=]",
32
- "[barmuda=, バルムーダ= ]",
33
- "[bashans=, バシャンス= ]",
34
- "[ba'una=, バウーナ= ]",
35
- "[abib=, アビーブ= ]",
36
- "[misra=, ミスラー= ]",
37
- "[epagomen=, エパゴメネ= ]"
38
- ],
39
-
40
- [self,
41
- "names:[EthiopianMonth=, 月=ja:%%<月_(暦)>]",
42
- "[Mäskäräm=, マスカラム= ]",
43
- "[Ṭəqəmt=, テケルト= ]",
44
- "[Ḫədar=, ヘダル= ]",
45
- "[Taḫśaś=, ターサス= ]",
46
- "[Ṭərr=, テル= ]",
47
- "[Yäkatit=, イェカティト=]",
48
- "[Mägabit=, メガビト= ]",
49
- "[Miyazya=, ミアジア= ]",
50
- "[Gənbot=, ゲエンポト= ]",
51
- "[Säne=, セネ= ]",
52
- "[Ḥamle=, ハムレ= ]",
53
- "[Nähase=, ネハッセ= ]",
54
- "[Ṗagʷəmen=, パゴウメン= ]"
55
- ]
56
- ]]
57
- end
58
-
59
- module CalendarTypes
60
-
61
- _egyptian_month_indices = [
62
- When.Index('Coptic::EgyptianMonth', {:unit =>13}),
63
- When::Coordinates::DefaultDayIndex
64
- ]
65
-
66
- _ethiopian_month_indices = [
67
- When.Index('Coptic::EthiopianMonth', {:unit =>13}),
68
- When::Coordinates::DefaultDayIndex
69
- ]
70
-
71
- #
72
- # Coptic Calendar in Egypt and Ethiopia
73
- #
74
- Coptic = [{'Epoch'=>{'284Y'=>{'origin_of_MSC' => 1},
75
- '0Y'=>{'origin_of_MSC' => 285},
76
- '8Y'=>{'origin_of_MSC' => 277,
77
- 'label' => 'Coptic::Ethiopian',
78
- 'indices' => _ethiopian_month_indices}}}, CyclicTableBased, {
79
- 'label' => 'Coptic::Coptic',
80
- 'origin_of_LSC' => 1825030,
81
- 'origin_of_MSC' => 1,
82
- 'diff_to_CE' => 285,
83
- 'indices' => _egyptian_month_indices,
84
- 'rule_table' => {
85
- 'T' => {'Rule' =>[365,365,366,365]},
86
- 365 => {'Length'=>[30]*12+[5]},
87
- 366 => {'Length'=>[30]*12+[6]}
88
- }
89
- }]
90
-
91
- #
92
- # Egyptian Calendar based on Chris Bennett, http://www.tyndalehouse.com/Egypt/ptolemies/chron/babylonian/chron_bab_intro_fr.htm
93
- #
94
- Ptolemaic = [CyclicTableBased, {
95
- 'label' => 'Coptic::Ptolemaic',
96
- 'remarks' => When.M17n('Coptic::based on Chris Bennett "Egyptian Dates" (Retrieved 2014-06-29)'),
97
- 'origin_of_LSC' => 1600478,
98
- 'origin_of_MSC' => -330,
99
- 'indices' => _egyptian_month_indices,
100
- 'rule_table' => {
101
- 'T' => {'Rule' =>[365]},
102
- 365 => {'Length'=>[30]*12+[5]}
103
- }
104
- }]
105
- end
106
- end
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2011-2015 Takashi SUGA
4
+
5
+ You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
6
+ =end
7
+
8
+ module When
9
+
10
+ class BasicTypes::M17n
11
+
12
+ Coptic = [self, [
13
+ "locale:[=en:, ja=ja:, zh=zh:, alias]",
14
+ "names:[Coptic=en:Copts, コプト, 科普特=zh:科普特人]",
15
+ "[Coptic=en:Coptic_calendar, コプト暦, 科普特曆 ]",
16
+ "[Ethiopian=en:Ethiopian_calendar, エチオピア暦=en:Ethiopian_calendar, 埃塞俄比亞曆=]",
17
+ "[Egyptian=en:Egypt, エジプト, 埃及 ]",
18
+ "[Ptolemaic=en:Ptolemaic_dynasty, プトレマイオス朝, 托勒密王朝 ]",
19
+
20
+ # Remarks
21
+ '[based on Chris Bennett "Egyptian Dates" (Retrieved 2014-06-29)=http://www.tyndalehouse.com/Egypt/ptolemies/chron/egyptian/chron_eg_intro.htm,' +
22
+ '典拠 - Chris Bennett "Egyptian Dates" (2014-06-29 閲覧)=]',
23
+
24
+ [self,
25
+ "names:[month name=en:Month, 月の名前=ja:%%<月_(暦)>, 該月的名稱=, *alias:EgyptianMonth=]",
26
+ "[tut=, トート= ]",
27
+ "[baba=, バーバ= ]",
28
+ "[hatur=, ハートール= ]",
29
+ "[kiyahak=, キヤハーク= ]",
30
+ "[tuba=, トーバ= ]",
31
+ "[amshir=, アムシール= ]",
32
+ "[baramhat=, バラムハート=]",
33
+ "[barmuda=, バルムーダ= ]",
34
+ "[bashans=, バシャンス= ]",
35
+ "[ba'una=, バウーナ= ]",
36
+ "[abib=, アビーブ= ]",
37
+ "[misra=, ミスラー= ]",
38
+ "[epagomen=, エパゴメネ= ]"
39
+ ],
40
+
41
+ [self,
42
+ "names:[month name=en:Month, 月の名前=ja:%%<月_(暦)>, 該月的名稱=, *alias:EthiopianMonth=]",
43
+ "[Mäskäräm=, マスカラム= ]",
44
+ "[Ṭəqəmt=, テケルト= ]",
45
+ "[Ḫədar=, ヘダル= ]",
46
+ "[Taḫśaś=, ターサス= ]",
47
+ "[Ṭərr=, テル= ]",
48
+ "[Yäkatit=, イェカティト=]",
49
+ "[Mägabit=, メガビト= ]",
50
+ "[Miyazya=, ミアジア= ]",
51
+ "[Gənbot=, ゲエンポト= ]",
52
+ "[Säne=, セネ= ]",
53
+ "[Ḥamle=, ハムレ= ]",
54
+ "[Nähase=, ネハッセ= ]",
55
+ "[Ṗagʷəmen=, パゴウメン= ]"
56
+ ]
57
+ ]]
58
+ end
59
+
60
+ module CalendarTypes
61
+
62
+ _egyptian_month_indices = [
63
+ When.Index('Coptic::EgyptianMonth', {:unit =>13}),
64
+ When::Coordinates::DefaultDayIndex
65
+ ]
66
+
67
+ _ethiopian_month_indices = [
68
+ When.Index('Coptic::EthiopianMonth', {:unit =>13}),
69
+ When::Coordinates::DefaultDayIndex
70
+ ]
71
+
72
+ #
73
+ # Coptic Calendar in Egypt and Ethiopia
74
+ #
75
+ Coptic = [{'Epoch'=>{'284Y'=>{'origin_of_MSC' => 1},
76
+ '0Y'=>{'origin_of_MSC' => 285},
77
+ '8Y'=>{'origin_of_MSC' => 277,
78
+ 'label' => 'Coptic::Ethiopian',
79
+ 'indices' => _ethiopian_month_indices}}}, CyclicTableBased, {
80
+ 'label' => 'Coptic::Coptic',
81
+ 'origin_of_LSC' => 1825030,
82
+ 'origin_of_MSC' => 1,
83
+ 'diff_to_CE' => 285,
84
+ 'indices' => _egyptian_month_indices,
85
+ 'rule_table' => {
86
+ 'T' => {'Rule' =>[365,365,366,365]},
87
+ 365 => {'Length'=>[30]*12+[5]},
88
+ 366 => {'Length'=>[30]*12+[6]}
89
+ }
90
+ }]
91
+
92
+ #
93
+ # Egyptian Calendar based on Chris Bennett, http://www.tyndalehouse.com/Egypt/ptolemies/chron/babylonian/chron_bab_intro_fr.htm
94
+ #
95
+ Ptolemaic = [CyclicTableBased, {
96
+ 'label' => 'Coptic::Ptolemaic',
97
+ 'remarks' => When.M17n('Coptic::based on Chris Bennett "Egyptian Dates" (Retrieved 2014-06-29)'),
98
+ 'origin_of_LSC' => 1600478,
99
+ 'origin_of_MSC' => -330,
100
+ 'indices' => _egyptian_month_indices,
101
+ 'rule_table' => {
102
+ 'T' => {'Rule' =>[365]},
103
+ 365 => {'Length'=>[30]*12+[5]}
104
+ }
105
+ }]
106
+ end
107
+ end
@@ -1,218 +1,218 @@
1
- # -*- coding: utf-8 -*-
2
- =begin
3
- Copyright (C) 2014 Takashi SUGA
4
-
5
- You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
6
- =end
7
-
8
- module When
9
-
10
- class BasicTypes::M17n
11
-
12
- Discordian = [self, [
13
- "locale:[=en:, ja]",
14
- "names:[Discordian=en:Discordian_calendar, ディスコーディアン暦=]",
15
- [self,
16
- "names:[IntercalaryDay=en:Intercalation, 閏日=ja:%%<閏>]",
17
- "[%0sSt. Tib's Day=, %0s閏日=]"
18
- ]
19
- ]]
20
- end
21
-
22
- #
23
- # Discordian Note
24
- #
25
- class CalendarNote::DiscordianWeek < CalendarNote::Week
26
-
27
- Notes = [When::BasicTypes::M17n, [
28
- "namespace:[en=http://en.wiktionary.org/wiki/]",
29
- "locale:[=en:]",
30
- "names:[Discordian]",
31
-
32
- # Notes for year ----------------------------
33
- [When::BasicTypes::M17n,
34
- "names:[year]"
35
- ],
36
-
37
- # Notes for month ----------------------------
38
- [When::BasicTypes::M17n,
39
- "names:[month]",
40
- [When::BasicTypes::M17n,
41
- "names:[Month=en:month]",
42
- "[Chaos=en:chaos ]",
43
- "[Discord=en:discord ]",
44
- "[Confusion=en:confusion ]",
45
- "[Bureaucracy=en:bureaucracy]",
46
- "[The Aftermath=en:aftermath]"
47
- ]
48
- ],
49
-
50
- # Notes for day ----------------------------
51
- [When::BasicTypes::M17n,
52
- "names:[day]",
53
- [When::BasicTypes::M17n,
54
- "names:[Week=en:week]",
55
- [DayOfWeek, "label:[Sweetmorn= ]", {'delta'=>5}],
56
- [DayOfWeek, "label:[Boomtime= ]", {'delta'=>5}],
57
- [DayOfWeek, "label:[Pungenday= ]", {'delta'=>5}],
58
- [DayOfWeek, "label:[Prickle-Prickle=]", {'delta'=>5}],
59
- [DayOfWeek, "label:[Setting Orange= ]", {'delta'=>5}],
60
- [DayOfWeek, "label:[Out of Week= ]", {'delta'=>1461}]
61
- ],
62
-
63
- [When::BasicTypes::M17n,
64
- "names:[Holyday=]",
65
- "[St. Tib's Day=]", # 02-29 St. Tib's Day
66
- "[Mungday= ]", # 01-05 Chaos 5
67
- "[Chaoflux= ]", # 02-19 Chaos 50
68
- "[Mojoday= ]", # 03-19 Discord 5
69
- "[Discoflux= ]", # 05-03 Discord 50
70
- "[Syaday= ]", # 05-31 Confusion 5
71
- "[Confuflux= ]", # 07-15 Confusion 50
72
- "[Zaraday= ]", # 08-12 Bureaucracy 5
73
- "[Bureflux= ]", # 09-26 Bureaucracy 50
74
- "[Maladay= ]", # 10-24 The Aftermath 5
75
- "[Afflux= ]" # 12-08 The Aftermath 50
76
- ],
77
-
78
- "[Common_Week=]"
79
- ]
80
- ]]
81
-
82
- # @private
83
- IndexOfWeek = [0, 1, 2, 3, 5, 4]
84
-
85
- # Just or last sweetmorn
86
- #
87
- # @param [When::TM::TemporalPosition] date
88
- # @param [nil] parameter (not used)
89
- #
90
- # @return [When::TM::TemporalPosition]
91
- #
92
- def sweetmorn(date, parameter=nil)
93
- date = _to_date_for_note(date)
94
- y,m,d = date.cal_date
95
- date -= When::P1D if date.length(When::MONTH) == 74 && +d == 60
96
- dow = ((m-1)*73+d*1-1) % 5
97
- date -= When::P1D * dow unless dow == 0
98
- date.events = [@days_of_week[0]]
99
- date
100
- end
101
-
102
- # Erisian week
103
- #
104
- # @param [When::TM::CalDate] date
105
- # @param [When::TM::CalDate] base
106
- #
107
- # @return [String]
108
- #
109
- def week(date, base=nil)
110
- date = _to_date_for_note(date)
111
- y,m,d = date.cal_date
112
- dow = d*0 == 0 ? ((m-1)*73+d*1-1) % 5 : 5
113
- length = (base || date).length(When::MONTH) == 73 ? 5 : 6
114
- index = length == 5 ? dow : IndexOfWeek[dow]
115
- {:value=>@days_of_week[dow], :position=>[index,length]}
116
- end
117
-
118
- #
119
- # Week labels
120
- #
121
- # @param [When::TM::TemporalPosition] date
122
- #
123
- # @return [Array<When::CalendarNote::Week::DayOfWeek>]
124
- #
125
- def week_labels(date)
126
- date = _to_date_for_note(date)
127
- date.length(When::MONTH) == 73 ?
128
- @days_of_week.child[0...5] :
129
- @days_of_week.child[0...4] + [@days_of_week.child[5]] + [@days_of_week.child[4]]
130
- end
131
-
132
- # Holyday
133
- #
134
- # @param [When::TM::CalDate] date
135
- #
136
- # @return [String]
137
- #
138
- def holyday(date)
139
- date = _to_date_for_note(date)
140
- y, m, d = date.cal_date
141
- index =
142
- case +d
143
- when 5 ; 1
144
- when 50 ; 2
145
- else ; d * 0 - 1
146
- end
147
- return nil if index == -1
148
- When.CalendarNote('DiscordianWeek/Notes::day::Holyday::*')[(m-1)*2+index]
149
- end
150
-
151
- #
152
- # convert date to Discordian date
153
- #
154
- # @private
155
- def _to_date_for_note(date)
156
- date = When::Discordian ^ date unless date.frame.label.to_s == 'Discordian'
157
- date
158
- end
159
-
160
- private
161
-
162
- # object normalization
163
- #
164
- # @private
165
- def _normalize(args=[], options={})
166
- @event ||= 'sweetmorn'
167
- super
168
- end
169
- end
170
-
171
- module CalendarTypes
172
-
173
- #
174
- # Discordian Calendar
175
- #
176
- class Discordian < SolarYearTableBased
177
-
178
- # @private
179
- Normal_IDS = (1..73).to_a
180
-
181
- # @private
182
- Long_IDS = (1..59).to_a + [When.Pair(59,1)] + (60..73).to_a
183
-
184
- private
185
-
186
- #
187
- # Object Normalization
188
- #
189
- def _normalize(args=[], options={})
190
- @label ||= 'Discordian'
191
- @indices ||= [
192
- When.Index('DiscordianWeekNotes::month::Month', {:unit =>5}),
193
- When.Index({:branch=>{1=>When.M17n('Discordian::IntercalaryDay')[0]}})
194
- ]
195
- @origin_of_MSC ||= +1166
196
- @diff_to_CE ||= 0
197
- @note ||= 'DiscordianWeek'
198
- @rule_table ||= {
199
- 365 => {'Length'=> [73]*5},
200
- 366 => {'Length'=> [74] + [73]*4}
201
- }
202
- super
203
- end
204
-
205
- #
206
- # day arrangement pattern
207
- #
208
- def _ids_(date)
209
- y, m = date
210
- case m
211
- when nil ; super
212
- when 0 ; @engine._length([+y, 1]) == 28 ? Normal_IDS : Long_IDS
213
- else ; Normal_IDS
214
- end
215
- end
216
- end
217
- end
218
- end
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2014-2015 Takashi SUGA
4
+
5
+ You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
6
+ =end
7
+
8
+ module When
9
+
10
+ class BasicTypes::M17n
11
+
12
+ Discordian = [self, [
13
+ "locale:[=en:, ja=ja:]",
14
+ "names:[Discordian=en:Discordian_calendar, ディスコーディアン暦=]",
15
+ [self,
16
+ "names:[IntercalaryDay=en:Intercalation, 閏日=ja:%%<閏>]",
17
+ "[%0sSt. Tib's Day=, %0s閏日=]"
18
+ ]
19
+ ]]
20
+ end
21
+
22
+ #
23
+ # Discordian Note
24
+ #
25
+ class CalendarNote::DiscordianWeek < CalendarNote::Week
26
+
27
+ Notes = [When::BasicTypes::M17n, [
28
+ "namespace:[en=http://en.wiktionary.org/wiki/]",
29
+ "locale:[=en:, ja=ja:]",
30
+ "names:[Discordian]",
31
+
32
+ # Notes for year ----------------------------
33
+ [When::BasicTypes::M17n,
34
+ "names:[note for year=, 年の暦注=, *year]"
35
+ ],
36
+
37
+ # Notes for month ----------------------------
38
+ [When::BasicTypes::M17n,
39
+ "names:[note for month=, 月の暦注=, *month]",
40
+ [When::BasicTypes::M17n,
41
+ "names:[month name=en:Month, 月の名前=ja:%%<月_(暦)>, zh:該月的名稱=, *alias:Month=]",
42
+ "[Chaos=en:chaos ]",
43
+ "[Discord=en:discord ]",
44
+ "[Confusion=en:confusion ]",
45
+ "[Bureaucracy=en:bureaucracy]",
46
+ "[The Aftermath=en:aftermath]"
47
+ ]
48
+ ],
49
+
50
+ # Notes for day ----------------------------
51
+ [When::BasicTypes::M17n,
52
+ "names:[note for day=, 日の暦注=, *day]",
53
+ [When::BasicTypes::M17n,
54
+ "names:[Five day week=, 五日週=, zh:五日週=, *alias:Week=]",
55
+ [DayOfWeek, "label:[Sweetmorn= ]", {'delta'=>5}],
56
+ [DayOfWeek, "label:[Boomtime= ]", {'delta'=>5}],
57
+ [DayOfWeek, "label:[Pungenday= ]", {'delta'=>5}],
58
+ [DayOfWeek, "label:[Prickle-Prickle=]", {'delta'=>5}],
59
+ [DayOfWeek, "label:[Setting Orange= ]", {'delta'=>5}],
60
+ [DayOfWeek, "label:[Out of Week= ]", {'delta'=>1461}]
61
+ ],
62
+
63
+ [When::BasicTypes::M17n,
64
+ "names:[Holyday=, 祝日=, zh:祝日=]",
65
+ "[St. Tib's Day=]", # 02-29 St. Tib's Day
66
+ "[Mungday= ]", # 01-05 Chaos 5
67
+ "[Chaoflux= ]", # 02-19 Chaos 50
68
+ "[Mojoday= ]", # 03-19 Discord 5
69
+ "[Discoflux= ]", # 05-03 Discord 50
70
+ "[Syaday= ]", # 05-31 Confusion 5
71
+ "[Confuflux= ]", # 07-15 Confusion 50
72
+ "[Zaraday= ]", # 08-12 Bureaucracy 5
73
+ "[Bureflux= ]", # 09-26 Bureaucracy 50
74
+ "[Maladay= ]", # 10-24 The Aftermath 5
75
+ "[Afflux= ]" # 12-08 The Aftermath 50
76
+ ],
77
+
78
+ "[Common_Week=]"
79
+ ]
80
+ ]]
81
+
82
+ # @private
83
+ IndexOfWeek = [0, 1, 2, 3, 5, 4]
84
+
85
+ # Just or last sweetmorn
86
+ #
87
+ # @param [When::TM::TemporalPosition] date
88
+ # @param [nil] parameter (not used)
89
+ #
90
+ # @return [When::TM::TemporalPosition]
91
+ #
92
+ def sweetmorn(date, parameter=nil)
93
+ date = _to_date_for_note(date)
94
+ y,m,d = date.cal_date
95
+ date -= When::P1D if date.length(When::MONTH) == 74 && +d == 60
96
+ dow = ((m-1)*73+d*1-1) % 5
97
+ date -= When::P1D * dow unless dow == 0
98
+ date.events = [@days_of_week[0]]
99
+ date
100
+ end
101
+
102
+ # Erisian week
103
+ #
104
+ # @param [When::TM::CalDate] date
105
+ # @param [When::TM::CalDate] base
106
+ #
107
+ # @return [String]
108
+ #
109
+ def week(date, base=nil)
110
+ date = _to_date_for_note(date)
111
+ y,m,d = date.cal_date
112
+ dow = d*0 == 0 ? ((m-1)*73+d*1-1) % 5 : 5
113
+ length = (base || date).length(When::MONTH) == 73 ? 5 : 6
114
+ index = length == 5 ? dow : IndexOfWeek[dow]
115
+ {:value=>@days_of_week[dow], :position=>[index,length]}
116
+ end
117
+
118
+ #
119
+ # Week labels
120
+ #
121
+ # @param [When::TM::TemporalPosition] date
122
+ #
123
+ # @return [Array<When::CalendarNote::Week::DayOfWeek>]
124
+ #
125
+ def week_labels(date)
126
+ date = _to_date_for_note(date)
127
+ date.length(When::MONTH) == 73 ?
128
+ @days_of_week.child[0...5] :
129
+ @days_of_week.child[0...4] + [@days_of_week.child[5]] + [@days_of_week.child[4]]
130
+ end
131
+
132
+ # Holyday
133
+ #
134
+ # @param [When::TM::CalDate] date
135
+ #
136
+ # @return [String]
137
+ #
138
+ def holyday(date)
139
+ date = _to_date_for_note(date)
140
+ y, m, d = date.cal_date
141
+ index =
142
+ case +d
143
+ when 5 ; 1
144
+ when 50 ; 2
145
+ else ; d * 0 - 1
146
+ end
147
+ return nil if index == -1
148
+ When.CalendarNote('DiscordianWeek/Notes::day::Holyday::*')[(m-1)*2+index]
149
+ end
150
+
151
+ #
152
+ # convert date to Discordian date
153
+ #
154
+ # @private
155
+ def _to_date_for_note(date)
156
+ date = When::Discordian ^ date unless date.frame.label.to_s == 'Discordian'
157
+ date
158
+ end
159
+
160
+ private
161
+
162
+ # object normalization
163
+ #
164
+ # @private
165
+ def _normalize(args=[], options={})
166
+ @event ||= 'sweetmorn'
167
+ super
168
+ end
169
+ end
170
+
171
+ module CalendarTypes
172
+
173
+ #
174
+ # Discordian Calendar
175
+ #
176
+ class Discordian < SolarYearTableBased
177
+
178
+ # @private
179
+ Normal_IDS = (1..73).to_a
180
+
181
+ # @private
182
+ Long_IDS = (1..59).to_a + [When.Pair(59,1)] + (60..73).to_a
183
+
184
+ private
185
+
186
+ #
187
+ # Object Normalization
188
+ #
189
+ def _normalize(args=[], options={})
190
+ @label ||= 'Discordian'
191
+ @indices ||= [
192
+ When.Index('DiscordianWeekNotes::month::Month', {:unit =>5}),
193
+ When.Index({:branch=>{1=>When.M17n('Discordian::IntercalaryDay')[0]}})
194
+ ]
195
+ @origin_of_MSC ||= +1166
196
+ @diff_to_CE ||= 0
197
+ @note ||= 'DiscordianWeek'
198
+ @rule_table ||= {
199
+ 365 => {'Length'=> [73]*5},
200
+ 366 => {'Length'=> [74] + [73]*4}
201
+ }
202
+ super
203
+ end
204
+
205
+ #
206
+ # day arrangement pattern
207
+ #
208
+ def _ids_(date)
209
+ y, m = date
210
+ case m
211
+ when nil ; super
212
+ when 0 ; @engine._length([+y, 1]) == 28 ? Normal_IDS : Long_IDS
213
+ else ; Normal_IDS
214
+ end
215
+ end
216
+ end
217
+ end
218
+ end