when_exe 0.3.6 → 0.3.7

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 (117) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +171 -0
  3. data/lib/when_exe.rb +78 -47
  4. data/lib/when_exe/basictypes.rb +752 -747
  5. data/lib/when_exe/calendarnote.rb +805 -801
  6. data/lib/when_exe/calendartypes.rb +1583 -1531
  7. data/lib/when_exe/coordinates.rb +16 -15
  8. data/lib/when_exe/core/duration.rb +114 -110
  9. data/lib/when_exe/core/extension.rb +504 -504
  10. data/lib/when_exe/ephemeris.rb +1917 -1913
  11. data/lib/when_exe/ephemeris/moon.rb +333 -333
  12. data/lib/when_exe/ephemeris/notes.rb +389 -387
  13. data/lib/when_exe/ephemeris/planets.rb +585 -585
  14. data/lib/when_exe/ephemeris/sun.rb +214 -214
  15. data/lib/when_exe/googlecalendar.rb +144 -140
  16. data/lib/when_exe/icalendar.rb +1636 -1636
  17. data/lib/when_exe/inspect.rb +46 -22
  18. data/lib/when_exe/locales/akt.rb +176 -176
  19. data/lib/when_exe/locales/encoding_conversion.rb +134 -126
  20. data/lib/when_exe/locales/iast.rb +90 -90
  21. data/lib/when_exe/locales/locale.rb +750 -746
  22. data/lib/when_exe/locales/transliteration_table.rb +62 -62
  23. data/lib/when_exe/mini_application.rb +307 -305
  24. data/lib/when_exe/parts/enumerator.rb +2 -2
  25. data/lib/when_exe/parts/geometric_complex.rb +397 -397
  26. data/lib/when_exe/parts/method_cash.rb +224 -224
  27. data/lib/when_exe/parts/resource.rb +1069 -1071
  28. data/lib/when_exe/parts/timezone.rb +240 -230
  29. data/lib/when_exe/region/armenian.rb +56 -56
  30. data/lib/when_exe/region/babylonian.rb +405 -0
  31. data/lib/when_exe/region/bahai.rb +146 -146
  32. data/lib/when_exe/region/balinese.rb +622 -622
  33. data/lib/when_exe/region/chinese.rb +95 -25
  34. data/lib/when_exe/region/chinese/calendars.rb +1016 -1016
  35. data/lib/when_exe/region/chinese/epochs.rb +1 -1
  36. data/lib/when_exe/region/chinese/twins.rb +803 -795
  37. data/lib/when_exe/region/christian.rb +824 -824
  38. data/lib/when_exe/region/coptic.rb +106 -87
  39. data/lib/when_exe/region/discordian.rb +225 -225
  40. data/lib/when_exe/region/far_east.rb +188 -188
  41. data/lib/when_exe/region/french.rb +56 -56
  42. data/lib/when_exe/region/geologicalage.rb +639 -639
  43. data/lib/when_exe/region/goddess.rb +58 -58
  44. data/lib/when_exe/region/indian.rb +1254 -1251
  45. data/lib/when_exe/region/iranian.rb +8 -8
  46. data/lib/when_exe/region/islamic.rb +3 -3
  47. data/lib/when_exe/region/japanese.rb +93 -99
  48. data/lib/when_exe/region/japanese/calendars.rb +396 -397
  49. data/lib/when_exe/region/japanese/epochs.rb +26 -26
  50. data/lib/when_exe/region/japanese/nihon_shoki.rb +71 -71
  51. data/lib/when_exe/region/japanese/notes.rb +1383 -1386
  52. data/lib/when_exe/region/japanese/residues.rb +1306 -1306
  53. data/lib/when_exe/region/japanese/twins.rb +225 -225
  54. data/lib/when_exe/region/japanese/weeks.rb +112 -0
  55. data/lib/when_exe/region/javanese.rb +230 -230
  56. data/lib/when_exe/region/jewish.rb +126 -126
  57. data/lib/when_exe/region/korean.rb +378 -378
  58. data/lib/when_exe/region/m17n.rb +114 -113
  59. data/lib/when_exe/region/martian.rb +258 -255
  60. data/lib/when_exe/region/mayan.rb +32 -32
  61. data/lib/when_exe/region/residue.rb +89 -89
  62. data/lib/when_exe/region/roman.rb +36 -24
  63. data/lib/when_exe/region/ryukyu.rb +97 -97
  64. data/lib/when_exe/region/shire.rb +240 -240
  65. data/lib/when_exe/region/soviet.rb +209 -0
  66. data/lib/when_exe/region/symmetry.rb +50 -50
  67. data/lib/when_exe/region/thai.rb +336 -335
  68. data/lib/when_exe/region/tibetan.rb +316 -315
  69. data/lib/when_exe/region/vietnamese.rb +440 -439
  70. data/lib/when_exe/region/weekdate.rb +80 -80
  71. data/lib/when_exe/region/world.rb +175 -175
  72. data/lib/when_exe/region/yerm.rb +14 -14
  73. data/lib/when_exe/region/zoroastrian.rb +203 -203
  74. data/lib/when_exe/timestandard.rb +707 -681
  75. data/lib/when_exe/tmduration.rb +338 -330
  76. data/lib/when_exe/tmobjects.rb +1346 -1325
  77. data/lib/when_exe/tmposition.rb +2115 -2072
  78. data/lib/when_exe/tmreference.rb +1693 -1669
  79. data/lib/when_exe/version.rb +1 -1
  80. data/link_to_online_documents +1 -1
  81. data/test/examples/JapanHolidaysRFC6350.ics +1 -1
  82. data/test/test.rb +67 -61
  83. data/test/test/basictypes.rb +409 -409
  84. data/test/test/calendarnote.rb +86 -69
  85. data/test/test/calendartypes.rb +97 -97
  86. data/test/test/coordinates.rb +396 -396
  87. data/test/test/ephemeris.rb +83 -74
  88. data/test/test/ephemeris/moon.rb +14 -14
  89. data/test/test/ephemeris/planets.rb +14 -14
  90. data/test/test/ephemeris/sun.rb +14 -14
  91. data/test/test/googlecalendar.rb +194 -176
  92. data/test/test/icalendar.rb +867 -858
  93. data/test/test/inspect.rb +117 -117
  94. data/test/test/parts.rb +487 -487
  95. data/test/test/region/balinese.rb +34 -0
  96. data/test/test/region/chinese.rb +218 -206
  97. data/test/test/region/christian.rb +245 -245
  98. data/test/test/region/coptic.rb +27 -27
  99. data/test/test/region/french.rb +33 -33
  100. data/test/test/region/geologicalage.rb +17 -17
  101. data/test/test/region/indian.rb +57 -57
  102. data/test/test/region/iran.rb +54 -54
  103. data/test/test/region/islamic.rb +18 -18
  104. data/test/test/region/japanese.rb +237 -219
  105. data/test/test/region/jewish.rb +61 -61
  106. data/test/test/region/m17n.rb +184 -184
  107. data/test/test/region/mayan.rb +195 -195
  108. data/test/test/region/residue.rb +147 -139
  109. data/test/test/region/thai.rb +116 -116
  110. data/test/test/region/tibetan.rb +30 -30
  111. data/test/test/region/vietnamese.rb +102 -102
  112. data/test/test/region/yerm.rb +146 -146
  113. data/test/test/timestandard.rb +81 -81
  114. data/test/test/tmobjects.rb +328 -328
  115. data/test/test/tmposition.rb +397 -284
  116. data/test/test/tmreference.rb +157 -157
  117. metadata +13 -10
@@ -11,7 +11,17 @@ module When
11
11
  # option key for _m17n_form
12
12
  # @private
13
13
  FormOptions = [:precision, :camel, :method, :locale, :prefix]
14
-
14
+
15
+ # When::Parts::Resource オブジェクトを分かりやすい文字列にして返します
16
+ #
17
+ # @return [String] 先頭部分を簡約表現にした IRI
18
+ #
19
+ def inspect
20
+ return super unless @_pool
21
+ expression = iri(true)
22
+ expression == '' ? super : expression
23
+ end
24
+
15
25
  #
16
26
  # オブジェクトの内容を Hash 化
17
27
  #
@@ -127,6 +137,14 @@ module When
127
137
  def _to_hash_value(options={})
128
138
  options[:method] == :to_m17n ? to_s : self
129
139
  end
140
+
141
+ # When::Coordinates::Pair オブジェクトを分かりやすい文字列にして返します
142
+ #
143
+ # @return [String] to_s と同様
144
+ #
145
+ def inspect
146
+ to_s
147
+ end
130
148
  end
131
149
 
132
150
  class Residue
@@ -289,6 +307,14 @@ module When
289
307
  end
290
308
  end
291
309
 
310
+ # When::TM::TemporalPosition オブジェクトを分かりやすい文字列にして返します
311
+ #
312
+ # @return [String] to_s と同様
313
+ #
314
+ def inspect
315
+ to_s
316
+ end
317
+
292
318
  #
293
319
  # 暦法名
294
320
  #
@@ -585,29 +611,27 @@ module When
585
611
 
586
612
  # 指定の日時が指定イベントに該当するか?
587
613
  #
588
- # @param [String] options { :notes => String } または { :notes => String } または { :value => String } という Hash の指定と等価
589
- # (指定の event が存在する場合は前者、指定の notes が存在する場合は中央、しない場合は後者)
590
- # @param [Integer] options { :indices => Integer } という Hash の指定と等価
591
- # @param [Hash] options 下記のとおり
592
- # @option options [String] :event 確認するイベント名
593
- # @option options [Object] :value 確認する暦注の値
594
- # @option options [Object] その他のキー {When::CalendarNote#notes} を参照
614
+ # @overload is?(event=nil, options={})
615
+ # @param [String] event options={:notes=>String} または {:notes=>String} または {:value=>String} という指定と等価
616
+ # (指定の event が存在する場合は前者、指定の notes が存在する場合は中央、しない場合は後者)
617
+ # @param [Integer] event options={ :indices=> Integer } という指定と等価
618
+ # @param [Hash] options 下記のとおり
619
+ # @option options [When::CalendarNote or String] :calendar_note 該当判断に用いる CalendarNoteオブジェクトまたはその IRI
620
+ # @option options [String] :event 確認するイベント名
621
+ # @option options [Object] :value 確認する暦注の値
622
+ # @option options [Object] その他のキー {When::CalendarNote#notes} を参照
595
623
  #
596
624
  # @return [Boolean]
597
625
  # [ true - 該当する ]
598
626
  # [ false - 該当しない ]
599
627
  #
600
- def is?(options=nil)
601
- calendar_note = _calendar_note(options)
602
- event =
603
- case options
604
- when String ; options
605
- when Hash ; options.delete(:event)
606
- else ; calendar_note.event
607
- end
608
- event.to_s =~ /^([^\d]+)/ && calendar_note.respond_to?($1.downcase) ?
609
- calendar_note.include?(self, event) :
610
- calendar_note.note?(self, options)
628
+ def is?(*args)
629
+ options = args.last.kind_of?(Hash) ? args.pop.dup : {}
630
+ note = _calendar_note(options)
631
+ event = args.first || options.delete(:event) || note.event
632
+ return note.note?(self, options) unless options.empty?
633
+ return note.note?(self, event) unless event.to_s =~ /\A([^\d]+)/ && note.respond_to?($1.downcase)
634
+ return note.include?(self, event)
611
635
  end
612
636
 
613
637
  #
@@ -714,7 +738,7 @@ module When
714
738
  when 'a' ; When.Resource('_co:Common::Abbr_Day')[to_i % 7].translate(locale)
715
739
  # 現在のロケールにおける曜日の完全な名前
716
740
  when 'A' ; When.Resource('_co:Common::Week')[to_i % 7].label.translate(locale)
717
- when 'b' ; (name(MONTH-d).translate(locale))[/^.{1,#{e}}/] # 現在のロケールにおける月の省略名
741
+ when 'b' ; (name(MONTH-d).translate(locale))[/\A.{1,#{e}}/] # 現在のロケールにおける月の省略名
718
742
  when 'B' ; (name(MONTH-d).translate(locale)) # 現在のロケールにおける月の完全な名前
719
743
  when 'C' ; year(d).div(100) # 世紀 (西暦年の上 2 桁)
720
744
  when 'd' ; day(d) # 月内通算日
@@ -758,9 +782,9 @@ module When
758
782
  pattern = pattern.translate(locale) if pattern.kind_of?(When::BasicTypes::M17n)
759
783
  pattern.scan(/(%[O\d]*(?:\.(\d+))?.)|(.)/) do |c,e,s|
760
784
  case c
761
- when /^%%/
785
+ when /\A%%/
762
786
  format += '%%'
763
- when /^%/
787
+ when /\A%/
764
788
  action = TemporalPosition.format[c[-1..-1]]
765
789
  case action
766
790
  when Array
@@ -1,176 +1,176 @@
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
- require 'when_exe/locales/transliteration_table'
9
-
10
- module When
11
- module Locale
12
-
13
- #
14
- # AKT: Alphabet of Katakana Transliteration
15
- #
16
- # see { http://www.asahi-net.or.jp/~dy5h-kdm/end2.htm MadKod}
17
- #
18
- AKT = {
19
- 'ja' => {
20
- "a" =>"ア", "i" =>"イ", "u" =>"ウ", "e" =>"エ", "o" =>"オ",
21
- "ka" =>"カ", "ki" =>"キ", "ku" =>"ク", "ke" =>"ケ", "ko" =>"コ", "k" =>"ク",
22
- "qa" =>"カ", "qi" =>"キ", "qu" =>"ク", "qe" =>"ケ", "qo" =>"コ", "q" =>"ク",
23
- "ga" =>"ガ", "gi" =>"ギ", "gu" =>"グ", "ge" =>"ゲ", "go" =>"ゴ", "g" =>"グ",
24
- "sa" =>"サ", "si" =>"シ", "su" =>"ス", "se" =>"セ", "so" =>"ソ", "s" =>"ス",
25
- "za" =>"ザ", "zi" =>"ヂ", "zu" =>"ズ", "ze" =>"ゼ", "zo" =>"ゾ", "z" =>"ズ",
26
- "ja" =>"ジャ", "ji" =>"ジ", "ju" =>"ジュ", "je" =>"ジェ", "jo" =>"ジョ", "j" =>"ジュ",
27
- "ca" =>"カ", "ci" =>"チ", "cu" =>"ク", "ce" =>"セ", "co" =>"コ", "c" =>"ク",
28
- "ta" =>"タ", "ti" =>"ティ", "tu" =>"トゥ", "te" =>"テ", "to" =>"ト", "t" =>"ト",
29
- "tsa"=>"ツァ", "tsi"=>"ツィ", "tsu"=>"ツ", "tse"=>"ツェ", "tso"=>"ツォ", "ts"=>"ツ",
30
- "da" =>"ダ", "di" =>"ディ", "du" =>"ドゥ", "de" =>"デ", "do" =>"ド", "d" =>"ド",
31
- "na" =>"ナ", "ni" =>"ニ", "nu" =>"ヌ", "ne" =>"ネ", "no" =>"ノ", "n" =>"ン",
32
- "ha" =>"ハ", "hi" =>"ヒ", "hu" =>"フ", "he" =>"ヘ", "ho" =>"ホ", "h" =>"フ",
33
- "ba" =>"バ", "bi" =>"ビ", "bu" =>"ブ", "be" =>"ベ", "bo" =>"ボ", "b" =>"ブ",
34
- "pa" =>"パ", "pi" =>"ピ", "pu" =>"プ", "pe" =>"ペ", "po" =>"ポ", "p" =>"プ",
35
- "fa" =>"ファ", "fi" =>"フィ", "fu" =>"フ", "fe" =>"フェ", "fo" =>"フォ", "f" =>"フ",
36
- "va" =>"ヴァ", "vi" =>"ヴィ", "vu" =>"ヴ", "ve" =>"ヴェ", "vo" =>"ヴォ", "v" =>"ヴ",
37
- "ma" =>"マ", "mi" =>"ミ", "mu" =>"ム", "me" =>"メ", "mo" =>"モ", "m" =>"ム",
38
- "mma"=>"ンマ", "mmi"=>"ンミ", "mmu"=>"ンム", "mme"=>"ンメ", "mmo"=>"ンモ",
39
- "ra" =>"ラ", "ri" =>"リ", "ru" =>"ル", "re" =>"レ", "ro" =>"ロ", "r" =>"ル",
40
- "la" =>"ラ", "li" =>"リ", "lu" =>"ル", "le" =>"レ", "lo" =>"ロ", "l" =>"ル",
41
- "wa" =>"ワ", "wi" =>"ウィ", "wu" =>"ゥ", "we" =>"ウェ", "wo" =>"ヲ", "w" =>"ゥ",
42
- "wwa"=>"ウヮ", "wwi"=>"ウィ", "wwu"=>"ウゥ", "wwe"=>"ウェ", "wwo"=>"ウォ",
43
- "xa" =>"ァ", "xi" =>"ィ", "xu" =>"ゥ", "xe" =>"ェ", "xo" =>"ォ", "x" =>"クス",
44
- "ya" =>"ヤ", "yu" =>"ユ", "yo" =>"ヨ", "y" =>"イ",
45
- "kya"=>"キャ", "kyu"=>"キュ", "kyo"=>"キョ",
46
- "kja"=>"キャ", "kvu"=>"キュ", "kjo"=>"キョ",
47
- "qja"=>"キャ", "qju"=>"キュ", "qjo"=>"キョ",
48
- "gya"=>"ギャ", "gyu"=>"ギュ", "gyo"=>"ギョ",
49
- "gja"=>"ギャ", "gju"=>"ギュ", "gjo"=>"ギョ",
50
- "sya"=>"シャ", "syu"=>"シュ", "syo"=>"ショ",
51
- "sja"=>"シャ", "sju"=>"シュ", "sjo"=>"ショ",
52
- "zya"=>"ジャ", "zyu"=>"ジュ", "zyo"=>"ジョ",
53
- "zja"=>"ヂャ", "zju"=>"ヂュ", "zjo"=>"ヂョ",
54
- "jya"=>"ジャ", "jyu"=>"ジュ", "jye"=>"ジェ", "jyo"=>"ジョ",
55
- "cyi"=>"チィ", "cyu"=>"チュ", "tyi"=>"ティ",
56
- "tyu"=>"テュ", "tye"=>"テェ", "tja"=>"チャ",
57
- "tju"=>"チュ", "tjo"=>"チョ", "-" =>"ー", "tsx"=>"ッ",
58
- "dyi"=>"ディ", "dyu"=>"デュ", "dye"=>"デェ",
59
- "dja"=>"ヂャ", "dju"=>"ヂュ", "djo"=>"ヂョ",
60
- "nya"=>"ニャ", "nyu"=>"ニュ", "nyo"=>"ニョ",
61
- "nva"=>"ニャ", "nvu"=>"ニュ", "nvo"=>"ニョ",
62
- "hya"=>"ヒャ", "hyu"=>"ヒュ", "hyo"=>"ヒョ",
63
- "bya"=>"ビャ", "byu"=>"ビュ", "byo"=>"ビョ",
64
- "pya"=>"ピャ", "pyu"=>"ピュ", "pyo"=>"ピョ",
65
- "fyu"=>"フュ", "vyu"=>"ヴュ",
66
- "mya"=>"ミャ", "myu"=>"ミュ", "myo"=>"ミョ",
67
- "mva"=>"ミャ", "mvu"=>"ミュ", "mvo"=>"ミョ",
68
- "rya"=>"リャ", "ryu"=>"リュ", "ryo"=>"リョ",
69
- "lya"=>"リャ", "lyu"=>"リュ", "lyo"=>"リョ",
70
- "wyi"=>"ウイ", "wyu"=>"ウユ", "wye"=>"ウエ",
71
- "xya"=>"ャ", "xyu"=>"ュ", "xyo"=>"ョ",
72
- "yya"=>"イャ", "yyi"=>"イィ", "yyu"=>"イュ", "yye"=>"イェ", "yyo"=>"イョ",
73
- "kwa"=>"クヮ", "kwi"=>"クィ", "kwu"=>"クゥ", "kwe"=>"クェ", "kwo"=>"クォ",
74
- "kha"=>"クァ", "khi"=>"クィ", "khu"=>"クゥ", "khe"=>"クェ", "kho"=>"クォ",
75
- "qha"=>"クァ", "qhi"=>"クィ", "qhu"=>"クゥ", "qhe"=>"クェ", "qho"=>"クォ",
76
- "gwa"=>"グヮ", "gwi"=>"グィ", "gwu"=>"グゥ", "gwe"=>"グェ", "gwo"=>"グォ",
77
- "gha"=>"グァ", "ghi"=>"グィ", "ghu"=>"グゥ", "ghe"=>"グェ", "gho"=>"グォ",
78
- "sha"=>"シャ", "shi"=>"シ", "shu"=>"シュ", "she"=>"シェ", "sho"=>"ショ", "sh"=>"シュ",
79
- "swa"=>"スワ", "swi"=>"スィ", "swu"=>"スゥ", "swe"=>"スェ", "swo"=>"スヲ",
80
- "zha"=>"ツァ", "zhi"=>"ツィ", "zhu"=>"ズゥ", "zhe"=>"ツェ", "zho"=>"ツォ",
81
- "zxa"=>"ツァ", "zxi"=>"ツィ", "zxu"=>"ズゥ", "zxe"=>"ツェ", "zxo"=>"ツォ",
82
- "jxa"=>"ジァ", "jxi"=>"ジィ", "jxu"=>"ジゥ", "jxe"=>"ジェ", "jxo"=>"ジォ",
83
- "cha"=>"チャ", "chi"=>"チ", "chu"=>"チュ", "che"=>"チェ", "cho"=>"チョ",
84
- "twa"=>"トワ", "twi"=>"ツイ", "twu"=>"トゥ", "twe"=>"ツエ", "two"=>"ツー",
85
- "tha"=>"スァ", "thi"=>"スィ", "thu"=>"スゥ", "the"=>"スェ", "tho"=>"スォ",
86
- "tza"=>"ツァ", "tzi"=>"ツィ", "tzu"=>"ズー", "tze"=>"ツェ", "tzo"=>"ツォ",
87
- "dwa"=>"ドワ", "dwi"=>"ドィ", "dwu"=>"ドゥ", "dwe"=>"ドェ", "dwo"=>"ドヲ",
88
- "dha"=>"ダー", "dhi"=>"ジー", "dhu"=>"ドフ", "dhe"=>"ドヘ", "dho"=>"ドホ",
89
- "dsa"=>"ドサ", "dsi"=>"ドシ", "dsu"=>"ズ", "dse"=>"ドセ", "dso"=>"ドソ",
90
- "nxa"=>"ニァ", "nxi"=>"ニィ", "nxu"=>"ニゥ", "nxe"=>"ニェ", "nxo"=>"ニォ",
91
- "hwa"=>"ホヮ", "hwi"=>"ホィ", "hwu"=>"ホゥ", "hwe"=>"ホェ", "hwo"=>"ホォ",
92
- "bha"=>"バー", "bhi"=>"ビー", "bhu"=>"ブー", "bhe"=>"ベー", "bho"=>"ボー",
93
- "pwa"=>"プヮ", "pwi"=>"プィ", "pwu"=>"プゥ", "pwe"=>"プェ", "pwo"=>"プォ",
94
- "pha"=>"ファ", "phi"=>"フィ", "phu"=>"フュ", "phe"=>"フェ", "pho"=>"フォ",
95
- "vha"=>"ヒャ", "vhi"=>"ヒィ", "vhu"=>"ヒュ", "vhe"=>"ヒェ", "vho"=>"ヒョ",
96
- "mha"=>"ムァ", "mhi"=>"ムィ", "mhu"=>"ムゥ", "mhe"=>"ムェ", "mho"=>"ムォ",
97
- "mwa"=>"ムヮ", "mwi"=>"ムィ", "mwu"=>"ムゥ", "mwe"=>"ムェ", "mwo"=>"ムォ",
98
- "rja"=>"リャ", "rji"=>"リィ", "rju"=>"リュ", "rje"=>"リェ", "rjo"=>"リョ",
99
- "lja"=>"リャ", "lji"=>"リィ", "lju"=>"リュ", "lje"=>"リェ", "ljo"=>"リョ",
100
- "wha"=>"ホワ", "whi"=>"ホイ", "whu"=>"ホウ", "whe"=>"ホエ", "who"=>"ホオ",
101
- "wxa"=>"ヮ", "wxi"=>"ヰ", "wxu"=>"ゥ", "wxe"=>"ヱ", "wxo"=>"ウォ",
102
- "xwa"=>"ヮ", "xwi"=>"ヰ", "xwu"=>"ゥ", "xwe"=>"ヱ", "xwo"=>"ウォ"
103
- }
104
- }
105
-
106
- # @private
107
- IAST_K = {
108
- "Ā" => "A-", "ā" => "a-",
109
- "Ī" => "I-", "ī" => "i-",
110
- "Ū" => "U-", "ū" => "u-",
111
- "E" => "e-", "e" => "e-",
112
- "Ē" => "e-", "ē" => "e-",
113
- "O" => "O-", "o" => "o-",
114
- "Ō" => "O-", "ō" => "o-",
115
- "Ṛ" => "R:", "ṛ" => "r:",
116
- "Ṝ" => "R:-", "ṝ" => "r:-",
117
- "R̥" => "R:", "r̥" => "r:",
118
- "R̥̄" => "R:-", "r̥̄" => "r:-",
119
- "Ḷ" => "L:", "ḷ" => "l:",
120
- "Ḹ" => "L:", "ḹ" => "l:",
121
- "Ṃ" => "M:", "ṃ" => "m:",
122
- "Ṁ" => "M:", "ṁ" => "m:",
123
- "Ḥ" => "H:", "ḥ" => "h:",
124
- "C" => "Ch", "c" => "ch",
125
- "Ṭ" => "T", "ṭ" => "t",
126
- "Kh" => "K", "kh" => "k",
127
- "Ch" => "Ch", "ch" => "ch",
128
- "Ṭh" => "T", "ṭh" => "t",
129
- "Th" => "T", "th" => "t",
130
- "Ph" => "P", "ph" => "p",
131
- "Ḍ" => "D", "ḍ" => "d",
132
- "Gh" => "G", "gh" => "g",
133
- "Jh" => "J", "jh" => "j",
134
- "Ḍh" => "D", "ḍh" => "d",
135
- "Dh" => "D", "dh" => "d",
136
- "Bh" => "B", "bh" => "b",
137
- "Ṅ" => "N", "ṅ" => "n",
138
- "Ñ" => "Ny", "ñ" => "ny",
139
- "Ṇ" => "N", "ṇ" => "n",
140
- "Ś" => "Sh", "ś" => "sh",
141
- "Ṣ" => "Sh", "ṣ" => "sh"
142
- }
143
-
144
- # @private
145
- AKT_keys = transliteration_keys_hash(AKT)
146
-
147
- # @private
148
- IAST_K_keys = transliteration_keys(IAST_K)
149
-
150
- #
151
- # Convert AKT string to katakana scripts
152
- #
153
- def self.akt(string, locale='ja')
154
- string.gsub(/([^aeiou])\1/, 'ッ\1').
155
- gsub(/m([fpb])/, 'n\1').
156
- gsub(AKT_keys[locale]) {|code|
157
- AKT[locale][code] || code
158
- }
159
- end
160
-
161
- #
162
- # Convert IAST string to katakana scripts
163
- #
164
- def self.iast_akt(string, locale='ja')
165
- akt(
166
- string.gsub(IAST_K_keys) {|code| IAST_K[code] || code}.
167
- downcase.gsub(/(.):-?(.)|(.):-?$/) {|code|
168
- "aeiou".index($2||':') ? $1 + $2 :
169
- $1=='m' ? "ン#{$2}" :
170
- code.sub(':','i')
171
- }.
172
- gsub(/([rm])y/, '\1uy'),
173
- locale)
174
- end
175
- end
176
- end
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
+ require 'when_exe/locales/transliteration_table'
9
+
10
+ module When
11
+ module Locale
12
+
13
+ #
14
+ # AKT: Alphabet of Katakana Transliteration
15
+ #
16
+ # see { http://www.asahi-net.or.jp/~dy5h-kdm/end2.htm MadKod}
17
+ #
18
+ AKT = {
19
+ 'ja' => {
20
+ "a" =>"ア", "i" =>"イ", "u" =>"ウ", "e" =>"エ", "o" =>"オ",
21
+ "ka" =>"カ", "ki" =>"キ", "ku" =>"ク", "ke" =>"ケ", "ko" =>"コ", "k" =>"ク",
22
+ "qa" =>"カ", "qi" =>"キ", "qu" =>"ク", "qe" =>"ケ", "qo" =>"コ", "q" =>"ク",
23
+ "ga" =>"ガ", "gi" =>"ギ", "gu" =>"グ", "ge" =>"ゲ", "go" =>"ゴ", "g" =>"グ",
24
+ "sa" =>"サ", "si" =>"シ", "su" =>"ス", "se" =>"セ", "so" =>"ソ", "s" =>"ス",
25
+ "za" =>"ザ", "zi" =>"ヂ", "zu" =>"ズ", "ze" =>"ゼ", "zo" =>"ゾ", "z" =>"ズ",
26
+ "ja" =>"ジャ", "ji" =>"ジ", "ju" =>"ジュ", "je" =>"ジェ", "jo" =>"ジョ", "j" =>"ジュ",
27
+ "ca" =>"カ", "ci" =>"チ", "cu" =>"ク", "ce" =>"セ", "co" =>"コ", "c" =>"ク",
28
+ "ta" =>"タ", "ti" =>"ティ", "tu" =>"トゥ", "te" =>"テ", "to" =>"ト", "t" =>"ト",
29
+ "tsa"=>"ツァ", "tsi"=>"ツィ", "tsu"=>"ツ", "tse"=>"ツェ", "tso"=>"ツォ", "ts"=>"ツ",
30
+ "da" =>"ダ", "di" =>"ディ", "du" =>"ドゥ", "de" =>"デ", "do" =>"ド", "d" =>"ド",
31
+ "na" =>"ナ", "ni" =>"ニ", "nu" =>"ヌ", "ne" =>"ネ", "no" =>"ノ", "n" =>"ン",
32
+ "ha" =>"ハ", "hi" =>"ヒ", "hu" =>"フ", "he" =>"ヘ", "ho" =>"ホ", "h" =>"フ",
33
+ "ba" =>"バ", "bi" =>"ビ", "bu" =>"ブ", "be" =>"ベ", "bo" =>"ボ", "b" =>"ブ",
34
+ "pa" =>"パ", "pi" =>"ピ", "pu" =>"プ", "pe" =>"ペ", "po" =>"ポ", "p" =>"プ",
35
+ "fa" =>"ファ", "fi" =>"フィ", "fu" =>"フ", "fe" =>"フェ", "fo" =>"フォ", "f" =>"フ",
36
+ "va" =>"ヴァ", "vi" =>"ヴィ", "vu" =>"ヴ", "ve" =>"ヴェ", "vo" =>"ヴォ", "v" =>"ヴ",
37
+ "ma" =>"マ", "mi" =>"ミ", "mu" =>"ム", "me" =>"メ", "mo" =>"モ", "m" =>"ム",
38
+ "mma"=>"ンマ", "mmi"=>"ンミ", "mmu"=>"ンム", "mme"=>"ンメ", "mmo"=>"ンモ",
39
+ "ra" =>"ラ", "ri" =>"リ", "ru" =>"ル", "re" =>"レ", "ro" =>"ロ", "r" =>"ル",
40
+ "la" =>"ラ", "li" =>"リ", "lu" =>"ル", "le" =>"レ", "lo" =>"ロ", "l" =>"ル",
41
+ "wa" =>"ワ", "wi" =>"ウィ", "wu" =>"ゥ", "we" =>"ウェ", "wo" =>"ヲ", "w" =>"ゥ",
42
+ "wwa"=>"ウヮ", "wwi"=>"ウィ", "wwu"=>"ウゥ", "wwe"=>"ウェ", "wwo"=>"ウォ",
43
+ "xa" =>"ァ", "xi" =>"ィ", "xu" =>"ゥ", "xe" =>"ェ", "xo" =>"ォ", "x" =>"クス",
44
+ "ya" =>"ヤ", "yu" =>"ユ", "yo" =>"ヨ", "y" =>"イ",
45
+ "kya"=>"キャ", "kyu"=>"キュ", "kyo"=>"キョ",
46
+ "kja"=>"キャ", "kvu"=>"キュ", "kjo"=>"キョ",
47
+ "qja"=>"キャ", "qju"=>"キュ", "qjo"=>"キョ",
48
+ "gya"=>"ギャ", "gyu"=>"ギュ", "gyo"=>"ギョ",
49
+ "gja"=>"ギャ", "gju"=>"ギュ", "gjo"=>"ギョ",
50
+ "sya"=>"シャ", "syu"=>"シュ", "syo"=>"ショ",
51
+ "sja"=>"シャ", "sju"=>"シュ", "sjo"=>"ショ",
52
+ "zya"=>"ジャ", "zyu"=>"ジュ", "zyo"=>"ジョ",
53
+ "zja"=>"ヂャ", "zju"=>"ヂュ", "zjo"=>"ヂョ",
54
+ "jya"=>"ジャ", "jyu"=>"ジュ", "jye"=>"ジェ", "jyo"=>"ジョ",
55
+ "cyi"=>"チィ", "cyu"=>"チュ", "tyi"=>"ティ",
56
+ "tyu"=>"テュ", "tye"=>"テェ", "tja"=>"チャ",
57
+ "tju"=>"チュ", "tjo"=>"チョ", "-" =>"ー", "tsx"=>"ッ",
58
+ "dyi"=>"ディ", "dyu"=>"デュ", "dye"=>"デェ",
59
+ "dja"=>"ヂャ", "dju"=>"ヂュ", "djo"=>"ヂョ",
60
+ "nya"=>"ニャ", "nyu"=>"ニュ", "nyo"=>"ニョ",
61
+ "nva"=>"ニャ", "nvu"=>"ニュ", "nvo"=>"ニョ",
62
+ "hya"=>"ヒャ", "hyu"=>"ヒュ", "hyo"=>"ヒョ",
63
+ "bya"=>"ビャ", "byu"=>"ビュ", "byo"=>"ビョ",
64
+ "pya"=>"ピャ", "pyu"=>"ピュ", "pyo"=>"ピョ",
65
+ "fyu"=>"フュ", "vyu"=>"ヴュ",
66
+ "mya"=>"ミャ", "myu"=>"ミュ", "myo"=>"ミョ",
67
+ "mva"=>"ミャ", "mvu"=>"ミュ", "mvo"=>"ミョ",
68
+ "rya"=>"リャ", "ryu"=>"リュ", "ryo"=>"リョ",
69
+ "lya"=>"リャ", "lyu"=>"リュ", "lyo"=>"リョ",
70
+ "wyi"=>"ウイ", "wyu"=>"ウユ", "wye"=>"ウエ",
71
+ "xya"=>"ャ", "xyu"=>"ュ", "xyo"=>"ョ",
72
+ "yya"=>"イャ", "yyi"=>"イィ", "yyu"=>"イュ", "yye"=>"イェ", "yyo"=>"イョ",
73
+ "kwa"=>"クヮ", "kwi"=>"クィ", "kwu"=>"クゥ", "kwe"=>"クェ", "kwo"=>"クォ",
74
+ "kha"=>"クァ", "khi"=>"クィ", "khu"=>"クゥ", "khe"=>"クェ", "kho"=>"クォ",
75
+ "qha"=>"クァ", "qhi"=>"クィ", "qhu"=>"クゥ", "qhe"=>"クェ", "qho"=>"クォ",
76
+ "gwa"=>"グヮ", "gwi"=>"グィ", "gwu"=>"グゥ", "gwe"=>"グェ", "gwo"=>"グォ",
77
+ "gha"=>"グァ", "ghi"=>"グィ", "ghu"=>"グゥ", "ghe"=>"グェ", "gho"=>"グォ",
78
+ "sha"=>"シャ", "shi"=>"シ", "shu"=>"シュ", "she"=>"シェ", "sho"=>"ショ", "sh"=>"シュ",
79
+ "swa"=>"スワ", "swi"=>"スィ", "swu"=>"スゥ", "swe"=>"スェ", "swo"=>"スヲ",
80
+ "zha"=>"ツァ", "zhi"=>"ツィ", "zhu"=>"ズゥ", "zhe"=>"ツェ", "zho"=>"ツォ",
81
+ "zxa"=>"ツァ", "zxi"=>"ツィ", "zxu"=>"ズゥ", "zxe"=>"ツェ", "zxo"=>"ツォ",
82
+ "jxa"=>"ジァ", "jxi"=>"ジィ", "jxu"=>"ジゥ", "jxe"=>"ジェ", "jxo"=>"ジォ",
83
+ "cha"=>"チャ", "chi"=>"チ", "chu"=>"チュ", "che"=>"チェ", "cho"=>"チョ",
84
+ "twa"=>"トワ", "twi"=>"ツイ", "twu"=>"トゥ", "twe"=>"ツエ", "two"=>"ツー",
85
+ "tha"=>"スァ", "thi"=>"スィ", "thu"=>"スゥ", "the"=>"スェ", "tho"=>"スォ",
86
+ "tza"=>"ツァ", "tzi"=>"ツィ", "tzu"=>"ズー", "tze"=>"ツェ", "tzo"=>"ツォ",
87
+ "dwa"=>"ドワ", "dwi"=>"ドィ", "dwu"=>"ドゥ", "dwe"=>"ドェ", "dwo"=>"ドヲ",
88
+ "dha"=>"ダー", "dhi"=>"ジー", "dhu"=>"ドフ", "dhe"=>"ドヘ", "dho"=>"ドホ",
89
+ "dsa"=>"ドサ", "dsi"=>"ドシ", "dsu"=>"ズ", "dse"=>"ドセ", "dso"=>"ドソ",
90
+ "nxa"=>"ニァ", "nxi"=>"ニィ", "nxu"=>"ニゥ", "nxe"=>"ニェ", "nxo"=>"ニォ",
91
+ "hwa"=>"ホヮ", "hwi"=>"ホィ", "hwu"=>"ホゥ", "hwe"=>"ホェ", "hwo"=>"ホォ",
92
+ "bha"=>"バー", "bhi"=>"ビー", "bhu"=>"ブー", "bhe"=>"ベー", "bho"=>"ボー",
93
+ "pwa"=>"プヮ", "pwi"=>"プィ", "pwu"=>"プゥ", "pwe"=>"プェ", "pwo"=>"プォ",
94
+ "pha"=>"ファ", "phi"=>"フィ", "phu"=>"フュ", "phe"=>"フェ", "pho"=>"フォ",
95
+ "vha"=>"ヒャ", "vhi"=>"ヒィ", "vhu"=>"ヒュ", "vhe"=>"ヒェ", "vho"=>"ヒョ",
96
+ "mha"=>"ムァ", "mhi"=>"ムィ", "mhu"=>"ムゥ", "mhe"=>"ムェ", "mho"=>"ムォ",
97
+ "mwa"=>"ムヮ", "mwi"=>"ムィ", "mwu"=>"ムゥ", "mwe"=>"ムェ", "mwo"=>"ムォ",
98
+ "rja"=>"リャ", "rji"=>"リィ", "rju"=>"リュ", "rje"=>"リェ", "rjo"=>"リョ",
99
+ "lja"=>"リャ", "lji"=>"リィ", "lju"=>"リュ", "lje"=>"リェ", "ljo"=>"リョ",
100
+ "wha"=>"ホワ", "whi"=>"ホイ", "whu"=>"ホウ", "whe"=>"ホエ", "who"=>"ホオ",
101
+ "wxa"=>"ヮ", "wxi"=>"ヰ", "wxu"=>"ゥ", "wxe"=>"ヱ", "wxo"=>"ウォ",
102
+ "xwa"=>"ヮ", "xwi"=>"ヰ", "xwu"=>"ゥ", "xwe"=>"ヱ", "xwo"=>"ウォ"
103
+ }
104
+ }
105
+
106
+ # @private
107
+ IAST_K = {
108
+ "Ā" => "A-", "ā" => "a-",
109
+ "Ī" => "I-", "ī" => "i-",
110
+ "Ū" => "U-", "ū" => "u-",
111
+ "E" => "e-", "e" => "e-",
112
+ "Ē" => "e-", "ē" => "e-",
113
+ "O" => "O-", "o" => "o-",
114
+ "Ō" => "O-", "ō" => "o-",
115
+ "Ṛ" => "R:", "ṛ" => "r:",
116
+ "Ṝ" => "R:-", "ṝ" => "r:-",
117
+ "R̥" => "R:", "r̥" => "r:",
118
+ "R̥̄" => "R:-", "r̥̄" => "r:-",
119
+ "Ḷ" => "L:", "ḷ" => "l:",
120
+ "Ḹ" => "L:", "ḹ" => "l:",
121
+ "Ṃ" => "M:", "ṃ" => "m:",
122
+ "Ṁ" => "M:", "ṁ" => "m:",
123
+ "Ḥ" => "H:", "ḥ" => "h:",
124
+ "C" => "Ch", "c" => "ch",
125
+ "Ṭ" => "T", "ṭ" => "t",
126
+ "Kh" => "K", "kh" => "k",
127
+ "Ch" => "Ch", "ch" => "ch",
128
+ "Ṭh" => "T", "ṭh" => "t",
129
+ "Th" => "T", "th" => "t",
130
+ "Ph" => "P", "ph" => "p",
131
+ "Ḍ" => "D", "ḍ" => "d",
132
+ "Gh" => "G", "gh" => "g",
133
+ "Jh" => "J", "jh" => "j",
134
+ "Ḍh" => "D", "ḍh" => "d",
135
+ "Dh" => "D", "dh" => "d",
136
+ "Bh" => "B", "bh" => "b",
137
+ "Ṅ" => "N", "ṅ" => "n",
138
+ "Ñ" => "Ny", "ñ" => "ny",
139
+ "Ṇ" => "N", "ṇ" => "n",
140
+ "Ś" => "Sh", "ś" => "sh",
141
+ "Ṣ" => "Sh", "ṣ" => "sh"
142
+ }
143
+
144
+ # @private
145
+ AKT_keys = transliteration_keys_hash(AKT)
146
+
147
+ # @private
148
+ IAST_K_keys = transliteration_keys(IAST_K)
149
+
150
+ #
151
+ # Convert AKT string to katakana scripts
152
+ #
153
+ def self.akt(string, locale='ja')
154
+ string.gsub(/([^aeiou])\1/, 'ッ\1').
155
+ gsub(/m([fpb])/, 'n\1').
156
+ gsub(AKT_keys[locale]) {|code|
157
+ AKT[locale][code] || code
158
+ }
159
+ end
160
+
161
+ #
162
+ # Convert IAST string to katakana scripts
163
+ #
164
+ def self.iast_akt(string, locale='ja')
165
+ akt(
166
+ string.gsub(IAST_K_keys) {|code| IAST_K[code] || code}.
167
+ downcase.gsub(/(.):-?(.)|(.):-?\z/) {|code|
168
+ "aeiou".index($2||':') ? $1 + $2 :
169
+ $1=='m' ? "ン#{$2}" :
170
+ code.sub(':','i')
171
+ }.
172
+ gsub(/([rm])y/, '\1uy'),
173
+ locale)
174
+ end
175
+ end
176
+ end