when_exe 0.3.6 → 0.3.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +171 -0
- data/lib/when_exe.rb +78 -47
- data/lib/when_exe/basictypes.rb +752 -747
- data/lib/when_exe/calendarnote.rb +805 -801
- data/lib/when_exe/calendartypes.rb +1583 -1531
- data/lib/when_exe/coordinates.rb +16 -15
- data/lib/when_exe/core/duration.rb +114 -110
- data/lib/when_exe/core/extension.rb +504 -504
- data/lib/when_exe/ephemeris.rb +1917 -1913
- data/lib/when_exe/ephemeris/moon.rb +333 -333
- data/lib/when_exe/ephemeris/notes.rb +389 -387
- data/lib/when_exe/ephemeris/planets.rb +585 -585
- data/lib/when_exe/ephemeris/sun.rb +214 -214
- data/lib/when_exe/googlecalendar.rb +144 -140
- data/lib/when_exe/icalendar.rb +1636 -1636
- data/lib/when_exe/inspect.rb +46 -22
- data/lib/when_exe/locales/akt.rb +176 -176
- data/lib/when_exe/locales/encoding_conversion.rb +134 -126
- data/lib/when_exe/locales/iast.rb +90 -90
- data/lib/when_exe/locales/locale.rb +750 -746
- data/lib/when_exe/locales/transliteration_table.rb +62 -62
- data/lib/when_exe/mini_application.rb +307 -305
- data/lib/when_exe/parts/enumerator.rb +2 -2
- data/lib/when_exe/parts/geometric_complex.rb +397 -397
- data/lib/when_exe/parts/method_cash.rb +224 -224
- data/lib/when_exe/parts/resource.rb +1069 -1071
- data/lib/when_exe/parts/timezone.rb +240 -230
- data/lib/when_exe/region/armenian.rb +56 -56
- data/lib/when_exe/region/babylonian.rb +405 -0
- data/lib/when_exe/region/bahai.rb +146 -146
- data/lib/when_exe/region/balinese.rb +622 -622
- data/lib/when_exe/region/chinese.rb +95 -25
- data/lib/when_exe/region/chinese/calendars.rb +1016 -1016
- data/lib/when_exe/region/chinese/epochs.rb +1 -1
- data/lib/when_exe/region/chinese/twins.rb +803 -795
- data/lib/when_exe/region/christian.rb +824 -824
- data/lib/when_exe/region/coptic.rb +106 -87
- data/lib/when_exe/region/discordian.rb +225 -225
- data/lib/when_exe/region/far_east.rb +188 -188
- data/lib/when_exe/region/french.rb +56 -56
- data/lib/when_exe/region/geologicalage.rb +639 -639
- data/lib/when_exe/region/goddess.rb +58 -58
- data/lib/when_exe/region/indian.rb +1254 -1251
- data/lib/when_exe/region/iranian.rb +8 -8
- data/lib/when_exe/region/islamic.rb +3 -3
- data/lib/when_exe/region/japanese.rb +93 -99
- data/lib/when_exe/region/japanese/calendars.rb +396 -397
- data/lib/when_exe/region/japanese/epochs.rb +26 -26
- data/lib/when_exe/region/japanese/nihon_shoki.rb +71 -71
- data/lib/when_exe/region/japanese/notes.rb +1383 -1386
- data/lib/when_exe/region/japanese/residues.rb +1306 -1306
- data/lib/when_exe/region/japanese/twins.rb +225 -225
- data/lib/when_exe/region/japanese/weeks.rb +112 -0
- data/lib/when_exe/region/javanese.rb +230 -230
- data/lib/when_exe/region/jewish.rb +126 -126
- data/lib/when_exe/region/korean.rb +378 -378
- data/lib/when_exe/region/m17n.rb +114 -113
- data/lib/when_exe/region/martian.rb +258 -255
- data/lib/when_exe/region/mayan.rb +32 -32
- data/lib/when_exe/region/residue.rb +89 -89
- data/lib/when_exe/region/roman.rb +36 -24
- data/lib/when_exe/region/ryukyu.rb +97 -97
- data/lib/when_exe/region/shire.rb +240 -240
- data/lib/when_exe/region/soviet.rb +209 -0
- data/lib/when_exe/region/symmetry.rb +50 -50
- data/lib/when_exe/region/thai.rb +336 -335
- data/lib/when_exe/region/tibetan.rb +316 -315
- data/lib/when_exe/region/vietnamese.rb +440 -439
- data/lib/when_exe/region/weekdate.rb +80 -80
- data/lib/when_exe/region/world.rb +175 -175
- data/lib/when_exe/region/yerm.rb +14 -14
- data/lib/when_exe/region/zoroastrian.rb +203 -203
- data/lib/when_exe/timestandard.rb +707 -681
- data/lib/when_exe/tmduration.rb +338 -330
- data/lib/when_exe/tmobjects.rb +1346 -1325
- data/lib/when_exe/tmposition.rb +2115 -2072
- data/lib/when_exe/tmreference.rb +1693 -1669
- data/lib/when_exe/version.rb +1 -1
- data/link_to_online_documents +1 -1
- data/test/examples/JapanHolidaysRFC6350.ics +1 -1
- data/test/test.rb +67 -61
- data/test/test/basictypes.rb +409 -409
- data/test/test/calendarnote.rb +86 -69
- data/test/test/calendartypes.rb +97 -97
- data/test/test/coordinates.rb +396 -396
- data/test/test/ephemeris.rb +83 -74
- data/test/test/ephemeris/moon.rb +14 -14
- data/test/test/ephemeris/planets.rb +14 -14
- data/test/test/ephemeris/sun.rb +14 -14
- data/test/test/googlecalendar.rb +194 -176
- data/test/test/icalendar.rb +867 -858
- data/test/test/inspect.rb +117 -117
- data/test/test/parts.rb +487 -487
- data/test/test/region/balinese.rb +34 -0
- data/test/test/region/chinese.rb +218 -206
- data/test/test/region/christian.rb +245 -245
- data/test/test/region/coptic.rb +27 -27
- data/test/test/region/french.rb +33 -33
- data/test/test/region/geologicalage.rb +17 -17
- data/test/test/region/indian.rb +57 -57
- data/test/test/region/iran.rb +54 -54
- data/test/test/region/islamic.rb +18 -18
- data/test/test/region/japanese.rb +237 -219
- data/test/test/region/jewish.rb +61 -61
- data/test/test/region/m17n.rb +184 -184
- data/test/test/region/mayan.rb +195 -195
- data/test/test/region/residue.rb +147 -139
- data/test/test/region/thai.rb +116 -116
- data/test/test/region/tibetan.rb +30 -30
- data/test/test/region/vietnamese.rb +102 -102
- data/test/test/region/yerm.rb +146 -146
- data/test/test/timestandard.rb +81 -81
- data/test/test/tmobjects.rb +328 -328
- data/test/test/tmposition.rb +397 -284
- data/test/test/tmreference.rb +157 -157
- metadata +13 -10
data/lib/when_exe/inspect.rb
CHANGED
@@ -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
|
-
# @
|
589
|
-
#
|
590
|
-
#
|
591
|
-
#
|
592
|
-
#
|
593
|
-
#
|
594
|
-
#
|
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?(
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
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))[
|
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
|
data/lib/when_exe/locales/akt.rb
CHANGED
@@ -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(/(.):-?(.)|(.)
|
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
|