when_exe 0.3.4 → 0.3.5

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 (168) hide show
  1. data/bin/locales.rb +2 -2
  2. data/bin/when.rb +2 -2
  3. data/lib/when_exe.rb +161 -55
  4. data/lib/when_exe/basictypes.rb +34 -26
  5. data/lib/when_exe/calendarnote.rb +654 -0
  6. data/lib/when_exe/calendartypes.rb +49 -474
  7. data/lib/when_exe/coordinates.rb +141 -34
  8. data/lib/when_exe/core/compatibility.rb +22 -2
  9. data/lib/when_exe/core/extension.rb +47 -3
  10. data/lib/when_exe/ephemeris.rb +82 -109
  11. data/lib/when_exe/googlecalendar.rb +1 -1
  12. data/lib/when_exe/icalendar.rb +26 -14
  13. data/lib/when_exe/inspect.rb +82 -68
  14. data/lib/when_exe/locales/af.rb +1 -1
  15. data/lib/when_exe/locales/ar.rb +1 -1
  16. data/lib/when_exe/locales/az.rb +1 -1
  17. data/lib/when_exe/locales/bg.rb +1 -1
  18. data/lib/when_exe/locales/bn.rb +1 -1
  19. data/lib/when_exe/locales/bs.rb +1 -1
  20. data/lib/when_exe/locales/ca.rb +1 -1
  21. data/lib/when_exe/locales/cs.rb +1 -1
  22. data/lib/when_exe/locales/cy.rb +1 -1
  23. data/lib/when_exe/locales/da.rb +1 -1
  24. data/lib/when_exe/locales/de.rb +1 -1
  25. data/lib/when_exe/locales/de_AT.rb +1 -1
  26. data/lib/when_exe/locales/de_CH.rb +1 -1
  27. data/lib/when_exe/locales/el.rb +1 -1
  28. data/lib/when_exe/locales/en.rb +1 -1
  29. data/lib/when_exe/locales/en_AU.rb +1 -1
  30. data/lib/when_exe/locales/en_CA.rb +1 -1
  31. data/lib/when_exe/locales/en_GB.rb +1 -1
  32. data/lib/when_exe/locales/en_IE.rb +1 -1
  33. data/lib/when_exe/locales/en_IN.rb +1 -1
  34. data/lib/when_exe/locales/en_NZ.rb +1 -1
  35. data/lib/when_exe/locales/en_US.rb +1 -1
  36. data/lib/when_exe/locales/eo.rb +1 -1
  37. data/lib/when_exe/locales/es.rb +1 -1
  38. data/lib/when_exe/locales/es_419.rb +1 -1
  39. data/lib/when_exe/locales/es_AR.rb +1 -1
  40. data/lib/when_exe/locales/es_CL.rb +1 -1
  41. data/lib/when_exe/locales/es_CO.rb +1 -1
  42. data/lib/when_exe/locales/es_CR.rb +1 -1
  43. data/lib/when_exe/locales/es_EC.rb +1 -1
  44. data/lib/when_exe/locales/es_MX.rb +1 -1
  45. data/lib/when_exe/locales/es_PA.rb +1 -1
  46. data/lib/when_exe/locales/es_PE.rb +1 -1
  47. data/lib/when_exe/locales/es_VE.rb +1 -1
  48. data/lib/when_exe/locales/et.rb +1 -1
  49. data/lib/when_exe/locales/eu.rb +1 -1
  50. data/lib/when_exe/locales/fa.rb +1 -1
  51. data/lib/when_exe/locales/fi.rb +1 -1
  52. data/lib/when_exe/locales/fr.rb +1 -1
  53. data/lib/when_exe/locales/fr_CA.rb +1 -1
  54. data/lib/when_exe/locales/fr_CH.rb +1 -1
  55. data/lib/when_exe/locales/gl.rb +1 -1
  56. data/lib/when_exe/locales/he.rb +1 -1
  57. data/lib/when_exe/locales/hi.rb +1 -1
  58. data/lib/when_exe/locales/hi_IN.rb +1 -1
  59. data/lib/when_exe/locales/hr.rb +1 -1
  60. data/lib/when_exe/locales/hu.rb +1 -1
  61. data/lib/when_exe/locales/id.rb +1 -1
  62. data/lib/when_exe/locales/is.rb +1 -1
  63. data/lib/when_exe/locales/it.rb +1 -1
  64. data/lib/when_exe/locales/it_CH.rb +1 -1
  65. data/lib/when_exe/locales/ja.rb +1 -1
  66. data/lib/when_exe/locales/kn.rb +1 -1
  67. data/lib/when_exe/locales/ko.rb +1 -1
  68. data/lib/when_exe/locales/lo.rb +1 -1
  69. data/lib/when_exe/locales/locales.rb +1 -1
  70. data/lib/when_exe/locales/lt.rb +1 -1
  71. data/lib/when_exe/locales/lv.rb +1 -1
  72. data/lib/when_exe/locales/mk.rb +1 -1
  73. data/lib/when_exe/locales/mn.rb +1 -1
  74. data/lib/when_exe/locales/ms.rb +1 -1
  75. data/lib/when_exe/locales/nb.rb +1 -1
  76. data/lib/when_exe/locales/ne.rb +1 -1
  77. data/lib/when_exe/locales/nl.rb +1 -1
  78. data/lib/when_exe/locales/nn.rb +1 -1
  79. data/lib/when_exe/locales/or.rb +1 -1
  80. data/lib/when_exe/locales/pl.rb +1 -1
  81. data/lib/when_exe/locales/pt.rb +1 -1
  82. data/lib/when_exe/locales/pt_BR.rb +1 -1
  83. data/lib/when_exe/locales/rm.rb +1 -1
  84. data/lib/when_exe/locales/ro.rb +1 -1
  85. data/lib/when_exe/locales/ru.rb +1 -1
  86. data/lib/when_exe/locales/sk.rb +1 -1
  87. data/lib/when_exe/locales/sl.rb +1 -1
  88. data/lib/when_exe/locales/sr.rb +1 -1
  89. data/lib/when_exe/locales/sv.rb +1 -1
  90. data/lib/when_exe/locales/sw.rb +1 -1
  91. data/lib/when_exe/locales/th.rb +1 -1
  92. data/lib/when_exe/locales/tl.rb +1 -1
  93. data/lib/when_exe/locales/tr.rb +1 -1
  94. data/lib/when_exe/locales/uk.rb +1 -1
  95. data/lib/when_exe/locales/ur.rb +1 -1
  96. data/lib/when_exe/locales/uz.rb +1 -1
  97. data/lib/when_exe/locales/vi.rb +1 -1
  98. data/lib/when_exe/locales/wo.rb +1 -1
  99. data/lib/when_exe/locales/zh_CN.rb +1 -1
  100. data/lib/when_exe/locales/zh_HK.rb +1 -1
  101. data/lib/when_exe/locales/zh_TW.rb +1 -1
  102. data/lib/when_exe/mini_application.rb +6 -2
  103. data/lib/when_exe/parts/enumerator.rb +13 -8
  104. data/lib/when_exe/parts/geometric_complex.rb +3 -5
  105. data/lib/when_exe/parts/locale.rb +185 -28
  106. data/lib/when_exe/parts/method_cash.rb +20 -10
  107. data/lib/when_exe/parts/resource.rb +154 -76
  108. data/lib/when_exe/parts/timezone.rb +11 -6
  109. data/lib/when_exe/region/bahai.rb +2 -2
  110. data/lib/when_exe/region/balinese.rb +296 -296
  111. data/lib/when_exe/region/chinese.rb +564 -564
  112. data/lib/when_exe/region/chinese_calendar.rb +5 -1
  113. data/lib/when_exe/region/chinese_epoch.rb +47 -102
  114. data/lib/when_exe/region/chinese_twin.rb +798 -0
  115. data/lib/when_exe/region/christian.rb +314 -338
  116. data/lib/when_exe/region/coptic.rb +88 -0
  117. data/lib/when_exe/region/ephemeric_notes.rb +322 -307
  118. data/lib/when_exe/region/french.rb +2 -2
  119. data/lib/when_exe/region/indian.rb +361 -272
  120. data/lib/when_exe/region/iranian.rb +2 -2
  121. data/lib/when_exe/region/islamic.rb +3 -3
  122. data/lib/when_exe/region/japanese.rb +1 -1
  123. data/lib/when_exe/region/japanese_notes.rb +165 -103
  124. data/lib/when_exe/region/japanese_residues.rb +56 -55
  125. data/lib/when_exe/region/japanese_twin.rb +228 -0
  126. data/lib/when_exe/region/javanese.rb +2 -2
  127. data/lib/when_exe/region/jewish.rb +2 -2
  128. data/lib/when_exe/region/korean.rb +4 -4
  129. data/lib/when_exe/region/m17n.rb +19 -19
  130. data/lib/when_exe/region/martian.rb +21 -9
  131. data/lib/when_exe/region/mayan.rb +19 -11
  132. data/lib/when_exe/region/moon.rb +7 -7
  133. data/lib/when_exe/region/nihon_shoki.rb +7 -7
  134. data/lib/when_exe/region/roman.rb +100 -100
  135. data/lib/when_exe/region/shire.rb +130 -147
  136. data/lib/when_exe/region/thai.rb +2 -2
  137. data/lib/when_exe/region/tibetan.rb +2 -2
  138. data/lib/when_exe/region/vietnamese.rb +383 -114
  139. data/lib/when_exe/region/world.rb +112 -129
  140. data/lib/when_exe/timestandard.rb +12 -1
  141. data/lib/when_exe/tmposition.rb +28 -14
  142. data/lib/when_exe/tmreference.rb +96 -93
  143. data/lib/when_exe/version.rb +1 -1
  144. data/test/examples/Terms.m17n +2 -2
  145. data/test/examples/sample.json +16 -0
  146. data/test/examples/sample.xml +1 -1
  147. data/test/test.rb +4 -0
  148. data/test/test/basictypes.rb +2 -2
  149. data/test/test/calendarnote.rb +69 -0
  150. data/test/test/calendartypes.rb +41 -1
  151. data/test/test/coordinates.rb +12 -1
  152. data/test/test/ephemeris.rb +13 -66
  153. data/test/test/icalendar.rb +3 -3
  154. data/test/test/inspect.rb +1 -1
  155. data/test/test/parts.rb +7 -4
  156. data/test/test/region/chinese.rb +45 -0
  157. data/test/test/region/coptic.rb +27 -0
  158. data/test/test/region/indian.rb +1 -1
  159. data/test/test/region/japanese.rb +4 -4
  160. data/test/test/region/jewish.rb +1 -1
  161. data/test/test/region/m17n.rb +7 -5
  162. data/test/test/region/residue.rb +2 -2
  163. data/test/test/region/vietnamese.rb +102 -0
  164. data/test/test/timestandard.rb +81 -0
  165. data/test/test/tmposition.rb +1 -1
  166. data/test/test/tmreference.rb +1 -1
  167. data/when_exe.gemspec +2 -2
  168. metadata +16 -7
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  =begin
3
- Copyright (C) 2011-2013 Takashi SUGA
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
@@ -11,7 +11,7 @@ module When
11
11
  FrenchTerms = [self, [
12
12
  "namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
13
13
  "locale:[=en:, ja=ja:, alias]",
14
- "names:[FrenchTerms]",
14
+ "names:[FrenchTerms=]",
15
15
 
16
16
  [self,
17
17
  "names:[Month, 月=ja:%%<月_(暦)>]",
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  =begin
3
- Copyright (C) 2011-2013 Takashi SUGA
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
@@ -11,7 +11,7 @@ module When
11
11
  IndianTerms = [self, [
12
12
  "namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
13
13
  "locale:[=en:, ja=ja:, alias]",
14
- "names:[IndianTerms]",
14
+ "names:[IndianTerms=]",
15
15
  "[IndianNationalSolar=en:Indian_national_calendar, インド国定暦]",
16
16
  "[HinduSolar=en:Hindu_calendar, インド太陽暦=ja:%%<ヒンドゥー暦>]",
17
17
  "[HinduLuniSolar=en:Hindu_calendar, インド太陰太陽暦=ja:%%<ヒンドゥー暦>]",
@@ -765,305 +765,394 @@ module When
765
765
  super
766
766
  end
767
767
  end
768
+ end
768
769
 
769
- class CalendarNote
770
- #
771
- # ヒンドゥー系の暦注
772
- #
773
- class HinduNote < self
770
+ class CalendarNote
771
+ #
772
+ # ヒンドゥー系の暦注
773
+ #
774
+ class HinduNote < self
775
+
776
+ NoteObjects = [When::BasicTypes::M17n, [
777
+ "namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
778
+ "locale:[=en:, ja=ja:, alias=ja:]",
779
+ "names:[Hindu]",
780
+
781
+ # 年の暦注 ----------------------------
782
+ [When::BasicTypes::M17n,
783
+ "names:[year]",
784
+ [When::BasicTypes::M17n,
785
+ "names:[samvatsara, 木星年=]",
786
+ "[Prabhava=, プラバヴァ= ]", # 1
787
+ "[Vibhava=, ヴィバヴァ= ]", # 2
788
+ "[Sukha=, スカ= ]", # 3
789
+ "[Pramoda=, プラモーダ= ]", # 4
790
+ "[Prajāpati=, プラジャーパティ= ]", # 5
791
+ "[Aṅgiras=, アンギラス= ]", # 6
792
+ "[Śrīmukha=, シュリームカ= ]", # 7
793
+ "[Bhāva=, バーヴァ= ]", # 8
794
+ "[Yuvan=, ユヴァン= ]", # 9
795
+ "[Dhātṛ=, ダートリ= ]", # 10
796
+ "[Īśvara=, イーシュヴァラ= ]", # 11
797
+ "[Bahudhānya=, バフダーニャ= ]", # 12
798
+ "[Pramāthin=, プラマーティン= ]", # 13
799
+ "[Vikrama=, ヴィクラマ= ]", # 14
800
+ "[Vṛṣa=, ヴリシャ= ]", # 15
801
+ "[Chitrabhānu=, チトラバーヌ= ]", # 16
802
+ "[Subhānu=, スバーヌ= ]", # 17
803
+ "[Tāraṇa=, ターラナ= ]", # 18
804
+ "[Pārthiva=, パールティヴァ= ]", # 19
805
+ "[Vyaya=, ヴヤヤ= ]", # 20
806
+ "[Sarvajit=, サルヴァジト= ]", # 21
807
+ "[Sarvadhārin=, サルヴァダーリン= ]", # 22
808
+ "[Virodhin=, ヴィローディン= ]", # 23
809
+ "[Vikṛta=, ヴィクリタ= ]", # 24
810
+ "[Khara=, カラ= ]", # 25
811
+ "[Nandana=, ナンダナ= ]", # 26
812
+ "[Vijaya=, ヴィジャヤ= ]", # 27
813
+ "[Jaya=, ジャヤ= ]", # 28
814
+ "[Manmatha=, マンマタ= ]", # 29
815
+ "[Durmukha=, ドゥルムカ= ]", # 30
816
+ "[Hemalamba=, ヘマラムバ= ]", # 31
817
+ "[Vilambin=, ヴィラムビン= ]", # 32
818
+ "[Vikārin=, ヴィカーリン= ]", # 33
819
+ "[Śārvarin=, シャールヴァリン= ]", # 34
820
+ "[Plava=, プラヴァ= ]", # 35
821
+ "[Śubhakṛt=, シュバクリト= ]", # 36
822
+ "[Śobhana=, ショバナ= ]", # 37
823
+ "[Krodhin=, クロディン= ]", # 38
824
+ "[Viśvāvasu=, ヴィシュヴァーヴァス=]", # 39
825
+ "[Parābhava=, パラーバヴァ= ]", # 40
826
+ "[Plavaṅga=, プラヴァンガ= ]", # 41
827
+ "[Kīlaka=, キーラカ= ]", # 42
828
+ "[Saumya=, サウムヤ= ]", # 43
829
+ "[Sādhāraṇa=, サーダーラナ= ]", # 44
830
+ "[Virodhakṛt=, ヴィローダクリト= ]", # 45
831
+ "[Paridhāvin=, パリダーヴィン= ]", # 46
832
+ "[Pramādin=, プラマーディン= ]", # 47
833
+ "[Ānanda=, アーナンダ= ]", # 48
834
+ "[Rākṣasa=, ラークシャサ= ]", # 49
835
+ "[Anala=, アナラ= ]", # 50
836
+ "[Piṅgala=, ピンガラ= ]", # 51
837
+ "[Kālayukta=, カーラユクタ= ]", # 52
838
+ "[Siddhārthin=, シッダールティン= ]", # 53
839
+ "[Raudra=, ラウドラ= ]", # 54
840
+ "[Durmati=, ドゥルマティ= ]", # 55
841
+ "[Dundubhi=, ドゥンドゥビ= ]", # 56
842
+ "[Rudhirodgārin=, ルディロードガーリン=]", # 57
843
+ "[Raktākṣin=, ラクタークシン= ]", # 58
844
+ "[Krodhana=, クローダナ= ]", # 59
845
+ "[Kṣaya=, クシャヤ= ]" # 60
846
+ ]
847
+ ],
848
+
849
+ # 月の暦注 ----------------------------
850
+ [When::BasicTypes::M17n,
851
+ "names:[month]",
852
+ [When::BasicTypes::M17n,
853
+ "names:[Month]"
854
+ ]
855
+ ],
856
+
857
+ # 日の暦注 ----------------------------
858
+ [When::BasicTypes::M17n,
859
+ "names:[day]",
774
860
 
775
- NoteObjects = [When::BasicTypes::M17n, [
776
- "namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
777
- "locale:[=en:, ja=ja:, alias=ja:]",
778
- "names:[Hindu]",
861
+ [When::BasicTypes::M17n,
862
+ "names:[tithi=, ティティ=ja:%%<ティティ>]",
863
+ "[Amavasya, 新月 ]", # 新月
864
+ "[Pratipad=en:Prathama_(day), 1日=]", # 1
865
+ "[Dwitiya, 2日=]", # 2
866
+ "[Tritiya, 3日=]", # 3
867
+ "[Chaturthi, 4日=]", # 4
868
+ "[Panchami, 5日=]", # 5
869
+ "[Ṣaṣṭhī=en:Shashti, 6日=]", # 6
870
+ "[Saptami, 7日=]", # 7
871
+ "[Ashtami, 8日=]", # 8
872
+ "[Navami, 9日=]", # 9
873
+ "[Dashami, 10日=]", # 10
874
+ "[Ekadashi, 11日=]", # 11
875
+ "[Dwadashi, 12日=]", # 12
876
+ "[Thrayodashi, 13日=]", # 13
877
+ "[Chaturdashi, 14日=]", # 14
878
+ "[Purnima, 満月 ]" # 満月
879
+ ],
779
880
 
780
- # 年の暦注 ----------------------------
781
881
  [When::BasicTypes::M17n,
782
- "names:[year]"
882
+ "names:[vāra=, ヴァーラ=, *vara=]",
883
+ "[Ravi=en:S%C5%ABrya, 日曜日]",
884
+ "[Soma, 月曜日]",
885
+ "[Maṅgala=en:Mangala, 火曜日]",
886
+ "[Budha, 水曜日]",
887
+ "[Guru, 木曜日]",
888
+ "[Śukra=en:Shukra, 金曜日]",
889
+ "[Śani=en:Shani, 土曜日]"
783
890
  ],
784
891
 
785
- # 月の暦注 ----------------------------
786
892
  [When::BasicTypes::M17n,
787
- "names:[month]",
788
- [When::BasicTypes::M17n,
789
- "names:[Month]"
790
- ]
893
+ "names:[nakṣatra=, ナクシャトラ=, *naksatra=]",
894
+ "[Aśvinī=en:Ashvin%C4%AB, アシュヴィニー=, 婁宿]", # 1
895
+ "[Bharaṇī=en:Bharan%C4%AB, バラニー=, 胃宿]", # 2
896
+ "[Kṛttikā=en:Krittik%C4%81, クリッティカー=, 昴宿]", # 3
897
+ "[Rohiṇī=en:Rohini_(nakshatra), ローヒニ―=, 畢宿]", # 4
898
+ "[Mṛgaśiras=en:Mrigash%C4%ABrsha, ムリガシラス=, 觜宿]", # 5
899
+ "[Ārdrā=en:Ardra_(nakshatra), アールドラー=, 參宿]", # 6
900
+ "[Punarvasu=en:Punarvasu, プナルヴァス=, 井宿]", # 7
901
+ "[Puṣya=en:Pushya, プシュヤ=, 鬼宿]", # 8
902
+ "[Aśleṣā=en:%C4%80shlesh%C4%81, アーシュレーシャー=, 柳宿]", # 9
903
+ "[Maghā=en:Magh%C4%81, マガー=, 星宿]", # 10
904
+ "[P. Phalguṇī=en:P%C5%ABrva_Phalgun%C4%AB, P. パールグニー=, 張宿]", # 11
905
+ "[U. Phalguṇī=en:Uttara_Phalgun%C4%AB, U. パールグニー=, 翼宿]", # 12
906
+ "[Hasta=en:Nakshatra#Divisions, ハスタ=, 軫宿]", # 13
907
+ "[Citrā=en:Nakshatra#Divisions, チトラー=, 角宿]", # 14
908
+ "[Svāti=en:Sv%C4%81t%C4%AB, スヴァーティー=, 亢宿]", # 15
909
+ "[Viśākha=en:Vish%C4%81kh%C4%81, ヴィシャーカー=, 氐宿]", # 16
910
+ "[Anurādhā=en:Anur%C4%81dh%C4%81, アヌラーダー=, 房宿]", # 17
911
+ "[Jyeṣṭha=en:Jyeshtha, ジェーシュター=, 心宿]", # 18
912
+ "[Mūla=en:Mula_(astrology), ムーラ=, 尾宿]", # 19
913
+ "[P. āṣāḍha=en:P%C5%ABrva_Ash%C4%81dh%C4%81, P. アーシャーダー=, 箕宿]", # 20
914
+ "[U. āṣāḍha=en:Uttara_Ash%C4%81dh%C4%81, U. アーシャーダー=, 斗宿]", # 21
915
+ "[Śravaṇa=en:Shravana, シュラヴァナ=, 女宿]", # 22
916
+ "[Śraviṣṭhā=en:Dhanishta, ダニシュター=, 虛宿]", # 23
917
+ "[Śatabhiṣak=en:Shatabhish%C4%81, シャタビシャジュ=, 危宿]", # 24
918
+ "[P. Bhādrapadā=en:P%C5%ABrva_Bh%C4%81drapad%C4%81, P. バードラパダー=, 室宿]", # 25
919
+ "[U. Bhādrapadā=en:Uttara_Bh%C4%81drapad%C4%81, U. バードラパダー=, 壁宿]", # 26
920
+ "[Revatī=en:Revati_(nakshatra), レーヴァティー=, 奎宿]" # 27
791
921
  ],
792
922
 
793
- # 日の暦注 ----------------------------
794
923
  [When::BasicTypes::M17n,
795
- "names:[day]",
796
-
797
- [When::BasicTypes::M17n,
798
- "names:[tithi=, ティティ=ja:%%<ティティ>]",
799
- "[Amavasya ]", # 新月
800
- "[Pratipad=en:Prathama_(day)]", # 1
801
- "[Dwitiya ]", # 2
802
- "[Tritiya ]", # 3
803
- "[Chaturthi ]", # 4
804
- "[Panchami ]", # 5
805
- "[Ṣaṣṭhī=en:Shashti ]", # 6
806
- "[Saptami ]", # 7
807
- "[Ashtami ]", # 8
808
- "[Navami ]", # 9
809
- "[Dashami ]", # 10
810
- "[Ekadashi ]", # 11
811
- "[Dwadashi ]", # 12
812
- "[Thrayodashi ]", # 13
813
- "[Chaturdashi ]", # 14
814
- "[Purnima ]" # 満月
815
- ],
816
-
817
- [When::BasicTypes::M17n,
818
- "names:[vāra=, ヴァーラ=, *vara=]",
819
- "[Ravi=en:S%C5%ABrya, 日曜日]",
820
- "[Soma, 月曜日]",
821
- "[Maṅgala=en:Mangala, 火曜日]",
822
- "[Budha, 水曜日]",
823
- "[Guru, 木曜日]",
824
- "[Śukra=en:Shukra, 金曜日]",
825
- "[Śani=en:Shani, 土曜日]"
826
- ],
827
-
828
- [When::BasicTypes::M17n,
829
- "names:[nakṣatra=, ナクシャトラ=, *naksatra=]",
830
- "[Aśvinī=en:Ashvin%C4%AB, アシュヴィニー=, 婁宿]", # 1
831
- "[Bharaṇī=en:Bharan%C4%AB, バラニー=, 胃宿]", # 2
832
- "[Kṛttikā=en:Krittik%C4%81, クリッティカー=, 昴宿]", # 3
833
- "[Rohiṇī=en:Rohini_(nakshatra), ローヒニ―=, 畢宿]", # 4
834
- "[Mṛgaśiras=en:Mrigash%C4%ABrsha, ムリガシラス=, 觜宿]", # 5
835
- "[Ārdrā=en:Ardra_(nakshatra), アールドラー=, 參宿]", # 6
836
- "[Punarvasu=en:Punarvasu, プナルヴァス=, 井宿]", # 7
837
- "[Puṣya=en:Pushya, プシュヤ=, 鬼宿]", # 8
838
- "[Aśleṣā=en:%C4%80shlesh%C4%81, アーシュレーシャー=, 柳宿]", # 9
839
- "[Maghā=en:Magh%C4%81, マガー=, 星宿]", # 10
840
- "[P. Phalguṇī=en:P%C5%ABrva_Phalgun%C4%AB, P. パールグニー=, 張宿]", # 11
841
- "[U. Phalguṇī=en:Uttara_Phalgun%C4%AB, U. パールグニー=, 翼宿]", # 12
842
- "[Hasta=en:Nakshatra#Divisions, ハスタ=, 軫宿]", # 13
843
- "[Citrā=en:Nakshatra#Divisions, チトラー=, 角宿]", # 14
844
- "[Svāti=en:Sv%C4%81t%C4%AB, スヴァーティー=, 亢宿]", # 15
845
- "[Viśākha=en:Vish%C4%81kh%C4%81, ヴィシャーカー=, 氐宿]", # 16
846
- "[Anurādhā=en:Anur%C4%81dh%C4%81, アヌラーダー=, 房宿]", # 17
847
- "[Jyeṣṭha=en:Jyeshtha, ジェーシュター=, 心宿]", # 18
848
- "[Mūla=en:Mula_(astrology), ムーラ=, 尾宿]", # 19
849
- "[P. āṣāḍha=en:P%C5%ABrva_Ash%C4%81dh%C4%81, P. アーシャーダー=, 箕宿]", # 20
850
- "[U. āṣāḍha=en:Uttara_Ash%C4%81dh%C4%81, U. アーシャーダー=, 斗宿]", # 21
851
- "[Śravaṇa=en:Shravana, シュラヴァナ=, 女宿]", # 22
852
- "[Śraviṣṭhā=en:Dhanishta, ダニシュター=, 虛宿]", # 23
853
- "[Śatabhiṣak=en:Shatabhish%C4%81, シャタビシャジュ=, 危宿]", # 24
854
- "[P. Bhādrapadā=en:P%C5%ABrva_Bh%C4%81drapad%C4%81, P. バードラパダー=, 室宿]", # 25
855
- "[U. Bhādrapadā=en:Uttara_Bh%C4%81drapad%C4%81, U. バードラパダー=, 壁宿]", # 26
856
- "[Revatī=en:Revati_(nakshatra), レーヴァティー=, 奎宿]" # 27
857
- ],
858
-
859
- [When::BasicTypes::M17n,
860
- "names:[yoga=, ヨーガ=]",
861
- "[iṣkambha=]", # 1
862
- "[rīti= ]", # 2
863
- "[yuśmān= ]", # 3
864
- "[aubhāgya=]", # 4
865
- "[obhana= ]", # 5
866
- "[tigaṇḍa= ]", # 6
867
- "[ukarma= ]", # 7
868
- "[hṛti= ]", # 8
869
- "[ūla= ]", # 9
870
- "[aṇḍa= ]", # 10
871
- "[ṛddhi= ]", # 11
872
- "[hruva= ]", # 12
873
- "[yāghatā= ]", # 13
874
- "[arṣaṇa= ]", # 14
875
- "[ajra= ]", # 15
876
- "[iddhi= ]", # 16
877
- "[yatipāta=]", # 17
878
- "[ariyas= ]", # 18
879
- "[arigha= ]", # 19
880
- "[iva= ]", # 20
881
- "[iddha= ]", # 21
882
- "[ādhya= ]", # 22
883
- "[ubha= ]", # 23
884
- "[ukla= ]", # 24
885
- "[rahma= ]", # 25
886
- "[āhendra= ]", # 26
887
- "[aidhṛti= ]" # 27
888
- ],
889
-
890
- [When::BasicTypes::M17n,
891
- "names:[Karaṇa=, カラナ=, *karana]",
892
- "[Bava=, バヴァ= ]", # 1
893
- "[Bālava=, バーラヴァ= ]", # 2
894
- "[Kaulava=, カウラヴァ= ]", # 3
895
- "[Taitila=, タイティラ= ]", # 4
896
- "[Gara=, ガラ= ]", # 5
897
- "[Vaṇija=, ヴァニジュ= ]", # 6
898
- "[Viṣṭi=, ヴィシュティ= ]", # 7
899
- "[Kiṃtughna=, キンストゥグナ=]", # A
900
- "[Śakuni=, シャクニ= ]", # B
901
- "[Catuṣpāda=, チャトシュパダ=]", # C
902
- "[Nāga=, ナーガ= ]" # D
903
- ]
924
+ "names:[yoga=, ヨーガ=]",
925
+ "[Viṣkambha=, ヴィシュカムバ= ]", # 1
926
+ "[Prīti=, プリーティ= ]", # 2
927
+ "[Āyuśmān=, アーユシュマー= ]", # 3
928
+ "[Saubhāgya=, サウバーギャ= ]", # 4
929
+ "[Śobhana=, ショーバナ= ]", # 5
930
+ "[Atigaṇḍa=, アティガンダ= ]", # 6
931
+ "[Sukarma=, スカルマ= ]", # 7
932
+ "[Dhṛti, ドゥリティ= ]", # 8
933
+ "[Śūla=, シューラ= ]", # 9
934
+ "[Gaṇḍa=, ガンダ= ]", # 10
935
+ "[Vṛddhi=, ヴリッディ= ]", # 11
936
+ "[Dhruva=, ドルヴァ= ]", # 12
937
+ "[Vyāghāta=, ヴヤーガータ= ]", # 13
938
+ "[Harṣaṇa=, ハルシャナ= ]", # 14
939
+ "[Vajra=, ヴァジュラ= ]", # 15
940
+ "[Siddhi=, シッディ= ]", # 16
941
+ "[Vyatīpāta=, ヴヤティーパータ=]", # 17
942
+ "[Varīyas=, ヴァリーヤス= ]", # 18
943
+ "[Parigha=, パリガ= ]", # 19
944
+ "[Śiva=, シヴァ= ]", # 20
945
+ "[Siddha=, シッダ= ]", # 21
946
+ "[Sādhya=, サーディヤ= ]", # 22
947
+ "[Śubha=, シュバ= ]", # 23
948
+ "[Śukla=, シュクラ= ]", # 24
949
+ "[Brahman=, ブラフマン= ]", # 25
950
+ "[Māhendra=, マーヘンドラ= ]", # 26
951
+ "[Vaidhṛti=, ヴァイドリティ= ]" # 27
952
+ ],
953
+
954
+ [When::BasicTypes::M17n,
955
+ "names:[Karaṇa=, カラナ=, *karana]",
956
+ "[Bava=, バヴァ= ]", # 1
957
+ "[Bālava=, バーラヴァ= ]", # 2
958
+ "[Kaulava=, カウラヴァ= ]", # 3
959
+ "[Taitila=, タイティラ= ]", # 4
960
+ "[Gara=, ガラ= ]", # 5
961
+ "[Vaṇija=, ヴァニジュ= ]", # 6
962
+ "[Viṣṭi=, ヴィシュティ= ]", # 7
963
+ "[Kiṃtughna=, キンストゥグナ=]", # A
964
+ "[Śakuni=, シャクニ= ]", # B
965
+ "[Catuṣpāda=, チャトシュパダ=]", # C
966
+ "[Nāga=, ナーガ= ]" # D
904
967
  ]
905
- ]]
906
-
907
- NoteConsts = {
908
- 'tithi' => {
909
- :formula => 15,
910
- :range => (-1..2),
911
- :index => [ 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,
912
- 15,1,2,3,4,5,6,7,8,9,10,11,12,13,14]
913
- },
914
- 'naksatra' => {
915
- :formula => '27M',
916
- :range => (-1..2),
917
- :index => (0...27).to_a
918
- },
919
- 'yoga' => {
920
- :formula => '27M+27S',
921
- :range => (-1..2),
922
- :index => (0...27).to_a
923
- },
924
- 'karana' => {
925
- :formula => 30,
926
- :range => (-2..3),
927
- :index => [7] + (0...7).to_a * 8 + [8,9,10]
928
- }
968
+ ]
969
+ ]]
970
+
971
+ NoteConsts = {
972
+ 'tithi' => {
973
+ :formula => 15,
974
+ :range => (-1..2),
975
+ :index => [ 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,
976
+ 15,1,2,3,4,5,6,7,8,9,10,11,12,13,14]
977
+ },
978
+ 'naksatra' => {
979
+ :formula => '27M',
980
+ :range => (-1..2),
981
+ :index => (0...27).to_a
982
+ },
983
+ 'yoga' => {
984
+ :formula => '27M+27S',
985
+ :range => (-1..2),
986
+ :index => (0...27).to_a
987
+ },
988
+ 'karana' => {
989
+ :formula => 30,
990
+ :range => (-2..3),
991
+ :index => [7] + (0...7).to_a * 8 + [8,9,10]
929
992
  }
993
+ }
930
994
 
931
- #
932
- # pancanga 計算に必要となる情報をまとめた内部クラス
933
- #
934
- class Dates
935
-
936
- # @private
937
- attr_reader :o_date, :l_date, :root, :formula, :iri, :rises
938
-
939
- # 初期設定
940
- # @private
941
- def initialize(date)
942
- @o_date = date
943
- clock = date.clock
944
- frame = date.frame if date.frame.kind_of?(When::CalendarTypes::HinduLuniSolar)
945
- @l_date = (frame || When.Calendar('HinduLuniSolar?note=HinduNote')).jul_trans(date.to_i, {:clock=>'+05:30'})
946
- @root = When.CalendarNote('HinduNote/NoteObjects')['day']
947
- @formula = @l_date.frame.formula[-1]
948
- @iri = @formula.iri
949
- @rises = [@formula.sunrise(@l_date), @formula.sunrise(@l_date+When.Duration('P1D'))]
950
- end
995
+ #
996
+ # pancanga 計算に必要となる情報をまとめた内部クラス
997
+ #
998
+ class Dates
951
999
 
952
- # その他のメソッドは @l_date に移譲する
953
- def method_missing(name, *args, &block)
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)
960
- end
961
- end
1000
+ # @private
1001
+ attr_reader :o_date, :l_date, :root, :formula, :iri, :rises
962
1002
 
963
- #
964
- # 任意の暦をインド太陰太陽暦日に変換
1003
+ # 初期設定
965
1004
  # @private
966
- def _to_date_for_note(date)
967
- Dates.new(date)
1005
+ def initialize(date)
1006
+ @o_date = date
1007
+ clock = date.clock
1008
+ frame = date.frame if date.frame.kind_of?(When::CalendarTypes::HinduLuniSolar)
1009
+ @l_date = (frame || When.Calendar('HinduLuniSolar?note=HinduNote')).jul_trans(date.to_i, {:clock=>'+05:30'})
1010
+ @root = When.CalendarNote('HinduNote/NoteObjects')['day']
1011
+ @formula = @l_date.frame.formula[-1]
1012
+ @iri = @formula.iri
1013
+ @rises = [@formula.sunrise(@l_date), @formula.sunrise(@l_date+When.Duration('P1D'))]
968
1014
  end
969
1015
 
970
- #
971
- # ヴァーラ (七曜)
972
- #
973
- # @param [Dates] dates
974
- #
975
- # @return [Array<When::TM::TemporalPosition>] 日の出の時刻をイベント時刻とする
976
- #
977
- def vara(dates)
978
- rise = dates.rises[0]
979
- rise.events = [dates.root['vara'][(rise.to_i+1) % 7]]
980
- [rise]
1016
+ # その他のメソッドは @l_date に移譲する
1017
+ def method_missing(name, *args, &block)
1018
+ self.class.module_eval %Q{
1019
+ def #{name}(*args, &block)
1020
+ @l_date.send("#{name}", *args, &block)
1021
+ end
1022
+ } unless When::Parts::MethodCash.escape(name)
1023
+ @l_date.send(name, *args, &block)
981
1024
  end
1025
+ end
982
1026
 
983
- #
984
- # ヴァーラ以外
985
- #
1027
+ #
1028
+ # 任意の暦をインド太陰太陽暦日に変換
1029
+ # @private
1030
+ def _to_date_for_note(date)
1031
+ Dates.new(date)
1032
+ end
986
1033
 
987
- # 当該日付中でティティが変わる日時
988
- # @method tithi(dates)
989
- # @param [Dates] dates
990
- # @return [Array<When::TM::TemporalPosition>] イベント日時
991
-
992
- # 当該日付中でナクシャトラが変わる日時
993
- # @method naksatra(dates)
994
- # @param [Dates] dates
995
- # @return [Array<When::TM::TemporalPosition>] イベント日時
996
-
997
- # 当該日付中でヨーガが変わる日時
998
- # @method yoga(dates)
999
- # @param [Dates] dates
1000
- # @return [Array<When::TM::TemporalPosition>] イベント日時
1001
-
1002
- # 当該日付中でカラナが変わる日時
1003
- # @method karana(dates)
1004
- # @param [Dates] dates
1005
- # @return [Array<When::TM::TemporalPosition>] イベント日時
1006
- #
1034
+ #
1035
+ # 木星年
1036
+ #
1037
+ # @param [Dates] dates
1038
+ #
1039
+ # @return [When::BasicTypes::M17n] 木星年の名称
1040
+ #
1041
+ # see {http://en.wikipedia.org/wiki/Samvatsara Samvatsara}
1042
+ #
1043
+ def samvatsara(dates)
1044
+ year_kali = dates.l_date.most_significant_coordinate + dates.l_date.frame._diff_to_CE + 3101
1045
+ year_mod = year_kali >= jovian ? (year_kali + 12) % 60 :
1046
+ ((year_kali * 211 - 108).div(18000) + year_kali + 26) % 60
1047
+ When.CalendarNote('HinduNote/NoteObjects')['year']['samvatsara'][year_mod]
1048
+ end
1007
1049
 
1008
- # @private
1009
- NoteConsts.keys.each do |key|
1010
- module_eval %Q{
1011
- def #{key}(dates)
1012
- pancanga(dates, '#{key}')
1013
- end
1014
- }
1015
- end
1050
+ #
1051
+ # 木星年の計算方式に“South”を適用開始する年
1052
+ #
1053
+ # @return [Integer] 年(カリユガ紀元)
1054
+ #
1055
+ def jovian
1056
+ return @jovian if @jovian.kind_of?(Integer)
1057
+ @jovian = @jovian ? @jovian.to_i : 4009
1058
+ end
1016
1059
 
1017
- #
1018
- # ヴァーラ以外のイベント日時
1019
- #
1020
- # @param [Dates] dates
1021
- # @param [String] key 'tithi', 'naksatra', 'yoga', 'karana' のいずれか
1022
- # @return [Array<When::TM::TemporalPosition>] イベント日時
1023
- #
1024
- def pancanga(dates, key)
1025
- pattern = NoteConsts[key]
1026
- note = dates.root[key]
1027
- if pattern[:formula].kind_of?(Numeric)
1028
- factor = pattern[:formula].to_f
1029
- formula = dates.formula
1030
- else
1031
- factor = 1.0
1032
- formula = When.Resource(dates.iri.sub(/formula=2L/, "formula=#{pattern[:formula]}"))
1033
- end
1034
- cn = (formula.time_to_cn(dates.l_date) * factor).floor
1035
- events = []
1036
- pattern[:range].each do |i|
1037
- event = formula._to_seed_type(formula.cn_to_time((cn+i)/factor), dates.l_date)
1038
- break if +event >= +dates.rises[1]
1039
- next if +event < +dates.rises[0]
1040
- event.events = [note[pattern[:index][(cn+i) % pattern[:index].length]]]
1041
- events << event
1060
+ #
1061
+ # ヴァーラ (七曜)
1062
+ #
1063
+ # @param [Dates] dates
1064
+ #
1065
+ # @return [Array<When::TM::TemporalPosition>] 日の出の時刻をイベント時刻とする
1066
+ #
1067
+ def vara(dates)
1068
+ rise = dates.rises[0]
1069
+ rise.events = [dates.root['vara'][(rise.to_i+1) % 7]]
1070
+ ['V:-', rise]
1071
+ end
1072
+
1073
+ #
1074
+ # ヴァーラ以外
1075
+ #
1076
+
1077
+ # 当該日付中でティティが変わる日時
1078
+ # @method tithi(dates)
1079
+ # @param [Dates] dates
1080
+ # @return [Array<When::TM::TemporalPosition>] イベント日時
1081
+
1082
+ # 当該日付中でナクシャトラが変わる日時
1083
+ # @method naksatra(dates)
1084
+ # @param [Dates] dates
1085
+ # @return [Array<When::TM::TemporalPosition>] イベント日時
1086
+
1087
+ # 当該日付中でヨーガが変わる日時
1088
+ # @method yoga(dates)
1089
+ # @param [Dates] dates
1090
+ # @return [Array<When::TM::TemporalPosition>] イベント日時
1091
+
1092
+ # 当該日付中でカラナが変わる日時
1093
+ # @method karana(dates)
1094
+ # @param [Dates] dates
1095
+ # @return [Array<When::TM::TemporalPosition>] イベント日時
1096
+ #
1097
+
1098
+ # @private
1099
+ NoteConsts.keys.each do |key|
1100
+ module_eval %Q{
1101
+ def #{key}(dates)
1102
+ pancanga(dates, '#{key}').map {|event| ['#{key[0..0].upcase}:-', event]}
1042
1103
  end
1043
- events
1044
- end
1104
+ }
1045
1105
  end
1046
1106
 
1047
1107
  #
1048
- # 日の出の九惑星の位置まで計算
1108
+ # ヴァーラ以外のイベント日時
1049
1109
  #
1050
- class HinduNoteDetailed < HinduNote
1051
- #
1052
- # ヴァーラ (七曜)と九惑星の位置
1053
- #
1054
- # @param [Dates] dates
1055
- # @return [Array<When::TM::TemporalPosition, Hash{ 惑星シンボル=>惑星の真黄経 }>]
1056
- # 日の出の時刻をイベント時刻とし、その時刻での九惑星の位置を計算
1057
- #
1058
- def vara(dates)
1059
- rise = dates.rises[0]
1060
- rise.events = [dates.root['vara'][(rise.to_i+1) % 7]]
1061
- t = dates.formula.is_dynamical ? +rise : rise.to_f
1062
- [rise, dates.formula.graha.keys.inject({}) {|h,p|
1063
- h.store(p, dates.formula.graha[p].true_longitude(t))
1064
- h
1065
- }]
1110
+ # @param [Dates] dates
1111
+ # @param [String] key 'tithi', 'naksatra', 'yoga', 'karana' のいずれか
1112
+ # @return [Array<When::TM::TemporalPosition>] イベント日時
1113
+ #
1114
+ def pancanga(dates, key)
1115
+ pattern = NoteConsts[key]
1116
+ note = dates.root[key]
1117
+ if pattern[:formula].kind_of?(Numeric)
1118
+ factor = pattern[:formula].to_f
1119
+ formula = dates.formula
1120
+ else
1121
+ factor = 1.0
1122
+ formula = When.Resource(dates.iri.sub(/formula=2L/, "formula=#{pattern[:formula]}"))
1123
+ end
1124
+ cn = (formula.time_to_cn(dates.l_date) * factor).floor
1125
+ events = []
1126
+ pattern[:range].each do |i|
1127
+ event = formula._to_seed_type(formula.cn_to_time((cn+i)/factor), dates.l_date)
1128
+ break if +event >= +dates.rises[1]
1129
+ next if +event < +dates.rises[0]
1130
+ event.events = [note[pattern[:index][(cn+i) % pattern[:index].length]]]
1131
+ events << event
1066
1132
  end
1133
+ events
1134
+ end
1135
+ end
1136
+
1137
+ #
1138
+ # 日の出の九惑星の位置まで計算
1139
+ #
1140
+ class HinduNoteDetailed < HinduNote
1141
+ #
1142
+ # ヴァーラ (七曜)と九惑星の位置
1143
+ #
1144
+ # @param [Dates] dates
1145
+ # @return [Array<When::TM::TemporalPosition, Hash{ 惑星シンボル=>惑星の真黄経 }>]
1146
+ # 日の出の時刻をイベント時刻とし、その時刻での九惑星の位置を計算
1147
+ #
1148
+ def vara(dates)
1149
+ rise = dates.rises[0]
1150
+ rise.events = [dates.root['vara'][(rise.to_i+1) % 7]]
1151
+ t = dates.formula.is_dynamical ? +rise : rise.to_f
1152
+ [['V:-', rise], dates.formula.graha.keys.inject({}) {|h,p|
1153
+ h.store(p, dates.formula.graha[p].true_longitude(t))
1154
+ h
1155
+ }]
1067
1156
  end
1068
1157
  end
1069
1158
  end