when_exe 0.3.4 → 0.3.5

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