when_exe 0.3.5 → 0.3.6
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/irb.rc +1 -0
- data/bin/locales.rb +8 -6
- data/bin/when.rb +1 -1
- data/lib/when_exe.rb +231 -146
- data/lib/when_exe/basictypes.rb +108 -18
- data/lib/when_exe/calendarnote.rb +263 -116
- data/lib/when_exe/calendartypes.rb +413 -22
- data/lib/when_exe/coordinates.rb +58 -36
- data/lib/when_exe/core/compatibility.rb +8 -6
- data/lib/when_exe/core/extension.rb +40 -15
- data/lib/when_exe/ephemeris.rb +20 -19
- data/lib/when_exe/{region → ephemeris}/moon.rb +4 -4
- data/lib/when_exe/{region/ephemeric_notes.rb → ephemeris/notes.rb} +25 -6
- data/lib/when_exe/{region → ephemeris}/planets.rb +0 -0
- data/lib/when_exe/{region → ephemeris}/sun.rb +7 -3
- data/lib/when_exe/{region → ephemeris}/v50.rb +0 -0
- data/lib/when_exe/googlecalendar.rb +2 -2
- data/lib/when_exe/icalendar.rb +3 -3
- data/lib/when_exe/inspect.rb +130 -70
- data/lib/when_exe/locales/af.rb +2 -2
- data/lib/when_exe/locales/akt.rb +176 -0
- data/lib/when_exe/locales/ar.rb +2 -2
- data/lib/when_exe/locales/{locales.rb → autoload.rb} +6 -2
- data/lib/when_exe/locales/az.rb +2 -2
- data/lib/when_exe/locales/bg.rb +2 -2
- data/lib/when_exe/locales/bn.rb +2 -2
- data/lib/when_exe/locales/bs.rb +2 -2
- data/lib/when_exe/locales/ca.rb +2 -2
- data/lib/when_exe/locales/cs.rb +2 -2
- data/lib/when_exe/locales/cy.rb +2 -2
- data/lib/when_exe/locales/da.rb +2 -2
- data/lib/when_exe/locales/de.rb +2 -2
- data/lib/when_exe/locales/de_AT.rb +2 -2
- data/lib/when_exe/locales/de_CH.rb +2 -2
- data/lib/when_exe/locales/el.rb +2 -2
- data/lib/when_exe/locales/en.rb +2 -2
- data/lib/when_exe/locales/en_AU.rb +2 -2
- data/lib/when_exe/locales/en_CA.rb +2 -2
- data/lib/when_exe/locales/en_GB.rb +2 -2
- data/lib/when_exe/locales/en_IE.rb +2 -2
- data/lib/when_exe/locales/en_IN.rb +3 -3
- data/lib/when_exe/locales/en_NZ.rb +2 -2
- data/lib/when_exe/locales/en_US.rb +2 -2
- data/lib/when_exe/locales/en_ZA.rb +88 -0
- data/lib/when_exe/locales/encoding_conversion.rb +126 -0
- data/lib/when_exe/locales/eo.rb +2 -2
- data/lib/when_exe/locales/es.rb +2 -2
- data/lib/when_exe/locales/es_419.rb +2 -2
- data/lib/when_exe/locales/es_AR.rb +2 -2
- data/lib/when_exe/locales/es_CL.rb +2 -2
- data/lib/when_exe/locales/es_CO.rb +2 -2
- data/lib/when_exe/locales/es_CR.rb +2 -2
- data/lib/when_exe/locales/es_EC.rb +2 -2
- data/lib/when_exe/locales/es_MX.rb +2 -2
- data/lib/when_exe/locales/es_PA.rb +2 -2
- data/lib/when_exe/locales/es_PE.rb +2 -2
- data/lib/when_exe/locales/es_US.rb +84 -0
- data/lib/when_exe/locales/es_VE.rb +2 -2
- data/lib/when_exe/locales/et.rb +2 -2
- data/lib/when_exe/locales/eu.rb +2 -2
- data/lib/when_exe/locales/fa.rb +2 -2
- data/lib/when_exe/locales/fi.rb +3 -3
- data/lib/when_exe/locales/fr.rb +2 -2
- data/lib/when_exe/locales/fr_CA.rb +2 -2
- data/lib/when_exe/locales/fr_CH.rb +2 -2
- data/lib/when_exe/locales/gl.rb +2 -2
- data/lib/when_exe/locales/he.rb +3 -3
- data/lib/when_exe/locales/hi.rb +2 -2
- data/lib/when_exe/locales/hi_IN.rb +2 -2
- data/lib/when_exe/locales/hr.rb +2 -2
- data/lib/when_exe/locales/hu.rb +6 -5
- data/lib/when_exe/locales/iast.rb +90 -0
- data/lib/when_exe/locales/id.rb +2 -2
- data/lib/when_exe/locales/is.rb +2 -2
- data/lib/when_exe/locales/it.rb +2 -2
- data/lib/when_exe/locales/it_CH.rb +2 -2
- data/lib/when_exe/locales/ja.rb +2 -2
- data/lib/when_exe/locales/kn.rb +2 -2
- data/lib/when_exe/locales/ko.rb +2 -2
- data/lib/when_exe/locales/links.rb +3 -3
- data/lib/when_exe/locales/lo.rb +2 -2
- data/lib/when_exe/{parts → locales}/locale.rb +77 -49
- data/lib/when_exe/locales/lt.rb +6 -2
- data/lib/when_exe/locales/lv.rb +2 -2
- data/lib/when_exe/locales/mk.rb +2 -2
- data/lib/when_exe/locales/mn.rb +2 -2
- data/lib/when_exe/locales/ms.rb +2 -2
- data/lib/when_exe/locales/nb.rb +2 -2
- data/lib/when_exe/locales/ne.rb +2 -2
- data/lib/when_exe/locales/nl.rb +2 -2
- data/lib/when_exe/locales/nn.rb +2 -2
- data/lib/when_exe/locales/or.rb +2 -2
- data/lib/when_exe/locales/pl.rb +2 -2
- data/lib/when_exe/locales/pt.rb +2 -2
- data/lib/when_exe/locales/pt_BR.rb +2 -2
- data/lib/when_exe/locales/rm.rb +2 -2
- data/lib/when_exe/locales/ro.rb +2 -2
- data/lib/when_exe/locales/ru.rb +2 -2
- data/lib/when_exe/locales/sk.rb +2 -2
- data/lib/when_exe/locales/sl.rb +2 -2
- data/lib/when_exe/locales/sr.rb +2 -2
- data/lib/when_exe/locales/sv.rb +2 -2
- data/lib/when_exe/locales/sw.rb +2 -2
- data/lib/when_exe/locales/ta.rb +95 -0
- data/lib/when_exe/locales/th.rb +2 -2
- data/lib/when_exe/locales/tl.rb +3 -3
- data/lib/when_exe/locales/tr.rb +2 -2
- data/lib/when_exe/locales/transliteration_table.rb +62 -0
- data/lib/when_exe/locales/uk.rb +15 -15
- data/lib/when_exe/locales/ur.rb +2 -2
- data/lib/when_exe/locales/uz.rb +2 -2
- data/lib/when_exe/locales/vi.rb +2 -2
- data/lib/when_exe/locales/wo.rb +2 -2
- data/lib/when_exe/locales/zh_CN.rb +2 -2
- data/lib/when_exe/locales/zh_HK.rb +15 -15
- data/lib/when_exe/locales/zh_TW.rb +2 -2
- data/lib/when_exe/locales/zh_YUE.rb +77 -0
- data/lib/when_exe/mini_application.rb +22 -12
- data/lib/when_exe/parts/geometric_complex.rb +16 -1
- data/lib/when_exe/parts/method_cash.rb +184 -238
- data/lib/when_exe/parts/resource.rb +65 -16
- data/lib/when_exe/region/armenian.rb +56 -0
- data/lib/when_exe/region/bahai.rb +13 -13
- data/lib/when_exe/region/balinese.rb +33 -35
- data/lib/when_exe/region/chinese.rb +82 -78
- data/lib/when_exe/region/{chinese_calendar.rb → chinese/calendars.rb} +59 -40
- data/lib/when_exe/region/{chinese_epoch.rb → chinese/epochs.rb} +3 -4
- data/lib/when_exe/region/{chinese_twin.rb → chinese/twins.rb} +48 -51
- data/lib/when_exe/region/christian.rb +236 -127
- data/lib/when_exe/region/coptic.rb +9 -10
- data/lib/when_exe/region/dee.rb +48 -0
- data/lib/when_exe/region/discordian.rb +225 -0
- data/lib/when_exe/region/far_east.rb +2 -6
- data/lib/when_exe/region/french.rb +7 -17
- data/lib/when_exe/region/geologicalage.rb +0 -1
- data/lib/when_exe/region/goddess.rb +58 -0
- data/lib/when_exe/region/indian.rb +323 -231
- data/lib/when_exe/region/iranian.rb +159 -22
- data/lib/when_exe/region/islamic.rb +7 -9
- data/lib/when_exe/region/japanese.rb +14 -803
- data/lib/when_exe/region/japanese/calendars.rb +397 -0
- data/lib/when_exe/region/japanese/epochs.rb +426 -0
- data/lib/when_exe/region/{nihon_shoki.rb → japanese/nihon_shoki.rb} +0 -2
- data/lib/when_exe/region/{japanese_notes.rb → japanese/notes.rb} +179 -150
- data/lib/when_exe/region/japanese/residues.rb +1306 -0
- data/lib/when_exe/region/{japanese_twin.rb → japanese/twins.rb} +12 -15
- data/lib/when_exe/region/javanese.rb +16 -14
- data/lib/when_exe/region/jewish.rb +8 -9
- data/lib/when_exe/region/korean.rb +146 -35
- data/lib/when_exe/region/m17n.rb +8 -10
- data/lib/when_exe/region/martian.rb +44 -16
- data/lib/when_exe/region/mayan.rb +12 -10
- data/lib/when_exe/region/pope.rb +0 -1
- data/lib/when_exe/region/residue.rb +4 -5
- data/lib/when_exe/region/roman.rb +20 -24
- data/lib/when_exe/region/ryukyu.rb +3 -4
- data/lib/when_exe/region/shire.rb +97 -94
- data/lib/when_exe/region/symmetry.rb +50 -0
- data/lib/when_exe/region/thai.rb +164 -56
- data/lib/when_exe/region/tibetan.rb +86 -86
- data/lib/when_exe/region/vietnamese.rb +9 -12
- data/lib/when_exe/region/weekdate.rb +80 -0
- data/lib/when_exe/region/world.rb +65 -70
- data/lib/when_exe/region/yerm.rb +98 -0
- data/lib/when_exe/region/zoroastrian.rb +203 -0
- data/lib/when_exe/timestandard.rb +4 -4
- data/lib/when_exe/tmobjects.rb +1 -3
- data/lib/when_exe/tmposition.rb +13 -12
- data/lib/when_exe/tmreference.rb +11 -10
- data/lib/when_exe/version.rb +1 -1
- data/link_to_online_documents +3 -3
- data/test/examples/Residue.m17n +1 -1
- data/test/examples/Terms.m17n +1 -1
- data/test/test.rb +2 -1
- data/test/test/basictypes.rb +18 -2
- data/test/test/calendarnote.rb +1 -1
- data/test/test/calendartypes.rb +1 -1
- data/test/test/coordinates.rb +7 -7
- data/test/test/{region → ephemeris}/moon.rb +0 -0
- data/test/test/{region → ephemeris}/planets.rb +0 -0
- data/test/test/{region → ephemeris}/sun.rb +0 -0
- data/test/test/parts.rb +8 -13
- data/test/test/region/christian.rb +245 -0
- data/test/test/region/french.rb +16 -16
- data/test/test/region/iran.rb +34 -34
- data/test/test/region/japanese.rb +6 -4
- data/test/test/region/m17n.rb +8 -7
- data/test/test/region/mayan.rb +12 -12
- data/test/test/region/residue.rb +20 -4
- data/test/test/region/thai.rb +25 -3
- data/test/test/region/yerm.rb +146 -0
- metadata +39 -20
- data/lib/when_exe/region/japanese_residues.rb +0 -1212
- data/test/test/region/civil.rb +0 -124
File without changes
|
@@ -52,6 +52,10 @@ module When
|
|
52
52
|
# The Sun
|
53
53
|
#
|
54
54
|
class Sun < Datum
|
55
|
+
|
56
|
+
# @private
|
57
|
+
Radius = 696000.0
|
58
|
+
|
55
59
|
class << self
|
56
60
|
|
57
61
|
include Ephemeris
|
@@ -144,9 +148,9 @@ module When
|
|
144
148
|
def initialize(*args)
|
145
149
|
options = [args.pop] if args[-1].kind_of?(Hash)
|
146
150
|
surface_radius, aberration, luminosity, *rest = args
|
147
|
-
surface_radius ||=
|
148
|
-
aberration ||=
|
149
|
-
luminosity ||=
|
151
|
+
surface_radius ||= Radius
|
152
|
+
aberration ||= 0.00000
|
153
|
+
luminosity ||= 4.58
|
150
154
|
args = [surface_radius, aberration, luminosity] + rest
|
151
155
|
args += options if options
|
152
156
|
super(*args)
|
File without changes
|
@@ -80,11 +80,11 @@ module GoogleCalendar
|
|
80
80
|
conditions['orderby'] = 'starttime'
|
81
81
|
direction = (conditions['sortorder'] == 'd') ? :reverse : :forward
|
82
82
|
first = When.when?(conditions['start-min'])
|
83
|
-
conditions['start-min'] = (When
|
83
|
+
conditions['start-min'] = (When::Gregorian ^ first).to_s
|
84
84
|
if conditions['start-max']
|
85
85
|
last = When.when?(conditions['start-max'])
|
86
86
|
inner_args = [first...last]
|
87
|
-
conditions['start-max'] = (When
|
87
|
+
conditions['start-max'] = (When::Gregorian ^ last).to_s
|
88
88
|
else
|
89
89
|
inner_args = [first, direction]
|
90
90
|
end
|
data/lib/when_exe/icalendar.rb
CHANGED
@@ -198,7 +198,7 @@ module When::V
|
|
198
198
|
@namespace[content.attribute['prefix'].object] = content.object
|
199
199
|
end while (content = content.same_altid)
|
200
200
|
else
|
201
|
-
@namespace.update(When::
|
201
|
+
@namespace.update(When::Locale._namespace(content.object))
|
202
202
|
end
|
203
203
|
end
|
204
204
|
|
@@ -315,7 +315,7 @@ module When::V
|
|
315
315
|
|
316
316
|
# locale の登録
|
317
317
|
@locale = @_pool['..'].respond_to?(:locale) ? @_pool['..'].locale : []
|
318
|
-
@locale = When::
|
318
|
+
@locale = When::Locale._locale(@property['locale'].object) if @property['locale']
|
319
319
|
|
320
320
|
# tzoffsetfrom の登録
|
321
321
|
if @property['tzoffsetfrom']
|
@@ -896,7 +896,7 @@ module When::V
|
|
896
896
|
['last_modified', 'tzurl', 'x_lic_location'], [], []]
|
897
897
|
Classes = [Standard, Daylight]
|
898
898
|
|
899
|
-
|
899
|
+
extend When::Parts::Resource::Pool
|
900
900
|
|
901
901
|
include When::Parts::Timezone::Base
|
902
902
|
|
data/lib/when_exe/inspect.rb
CHANGED
@@ -107,13 +107,28 @@ module When
|
|
107
107
|
when Numeric, FalseClass, TrueClass ; element
|
108
108
|
else ; element.to_s
|
109
109
|
end
|
110
|
-
result = When::
|
110
|
+
result = When::Locale.translate(result,options[:locale]) if options[:locale] && result.kind_of?(String)
|
111
111
|
result
|
112
112
|
end
|
113
113
|
end
|
114
114
|
|
115
115
|
module Coordinates
|
116
116
|
|
117
|
+
class Pair
|
118
|
+
#
|
119
|
+
# to_h のための要素生成
|
120
|
+
#
|
121
|
+
# @param [Hash] options 下記のとおり
|
122
|
+
# @option options [Symbol] :method :to_m17n なら to_s を返す、その他は self を返す
|
123
|
+
#
|
124
|
+
# @return [String, When::Coordinates::Pair]
|
125
|
+
#
|
126
|
+
# @private
|
127
|
+
def _to_hash_value(options={})
|
128
|
+
options[:method] == :to_m17n ? to_s : self
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
117
132
|
class Residue
|
118
133
|
# 多言語対応文字列化
|
119
134
|
#
|
@@ -134,25 +149,99 @@ module When
|
|
134
149
|
return label.to_s + "(#{difference})" unless @format
|
135
150
|
@format.to_s % [label.to_s, difference, difference+1]
|
136
151
|
end
|
137
|
-
end
|
138
152
|
|
139
|
-
class Pair
|
140
153
|
#
|
141
|
-
#
|
154
|
+
# week_included のための range の決定
|
142
155
|
#
|
143
|
-
# @
|
144
|
-
# @option options [Symbol] :method :to_m17n なら to_s を返す、その他は self を返す
|
156
|
+
# @return [Array<Range>]
|
145
157
|
#
|
146
|
-
# @
|
158
|
+
# @private
|
159
|
+
def _range_for_week_included(date, first, length, block_given=false)
|
160
|
+
today = date.floor
|
161
|
+
begun = today.succ & self >> first-1
|
162
|
+
unless date.frame.equal?(begun.frame)
|
163
|
+
begun = (date.frame ^ today).succ & self >> first-1
|
164
|
+
middle = today
|
165
|
+
end
|
166
|
+
ended = begun.succ & self >> length-1
|
167
|
+
middle && block_given ? [begun...middle, middle...ended] : [begun...ended]
|
168
|
+
end
|
169
|
+
|
170
|
+
#
|
171
|
+
# week_included のためのコラムの生成
|
172
|
+
#
|
173
|
+
# @return [Array<Object>]
|
147
174
|
#
|
148
175
|
# @private
|
149
|
-
def
|
150
|
-
|
176
|
+
def _column_for_week_included(base, range, opt, &block)
|
177
|
+
range.inject([]) {|s,r| s + r.map { |date|
|
178
|
+
yield(date, !opt.key?(:Range) || opt[:Range].include?(date.to_i) ? DAY : nil)
|
179
|
+
}}
|
151
180
|
end
|
152
181
|
end
|
153
182
|
end
|
154
183
|
|
184
|
+
class CalendarNote::Week
|
185
|
+
|
186
|
+
#
|
187
|
+
# week_included のための range の決定
|
188
|
+
#
|
189
|
+
# @return [Array<Range>]
|
190
|
+
#
|
191
|
+
# @private
|
192
|
+
def _range_for_week_included(date, first, length, block_given=false)
|
193
|
+
begun = ended = nil
|
194
|
+
if first <= 0
|
195
|
+
it = enum_for(date.floor, :reverse)
|
196
|
+
(1-first).times do
|
197
|
+
begun = it.next
|
198
|
+
end
|
199
|
+
else
|
200
|
+
it = enum_for(date.floor, :forward)
|
201
|
+
first.times do
|
202
|
+
begun = it.next
|
203
|
+
end
|
204
|
+
end
|
205
|
+
it = enum_for(begun, :forward)
|
206
|
+
(length+1).times do
|
207
|
+
ended = it.next
|
208
|
+
end
|
209
|
+
[begun...ended]
|
210
|
+
end
|
211
|
+
|
212
|
+
#
|
213
|
+
# week_included のためのコラムの生成
|
214
|
+
#
|
215
|
+
# @return [Array<Object>]
|
216
|
+
#
|
217
|
+
# @private
|
218
|
+
def _column_for_week_included(base, range, opt, &block)
|
219
|
+
count = 0
|
220
|
+
limit = week(base)[:position][1]
|
221
|
+
range.inject([]) {|s,r| s + r.map { |date|
|
222
|
+
position = week(date, base)[:position][0]
|
223
|
+
(position - count).times do
|
224
|
+
yield(nil,nil)
|
225
|
+
end
|
226
|
+
count = position + 1
|
227
|
+
yield(date, !opt.key?(:Range) || opt[:Range].include?(date.to_i) ? DAY : nil) if position < limit
|
228
|
+
}}
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
155
232
|
module TM
|
233
|
+
|
234
|
+
class Calendar
|
235
|
+
|
236
|
+
# TemporalPosition#strftime のためのデフォルト書式
|
237
|
+
#
|
238
|
+
# @return [String]
|
239
|
+
#
|
240
|
+
def strftime
|
241
|
+
@strftime ||= '%Y-%m-%d'
|
242
|
+
end
|
243
|
+
end
|
244
|
+
|
156
245
|
class TemporalPosition
|
157
246
|
|
158
247
|
AMPM = ['AM', 'PM'].map {|half| When::Parts::Resource._instance('_m:CalendarFormats::' + half)}
|
@@ -163,10 +252,10 @@ module When
|
|
163
252
|
'E' => ['%s', 'E'], 'F' => ['%s', 'F'], 'G' => ['%d', 'G'], 'g' => ['%02d', 'g'],
|
164
253
|
'h' => '%b', 'H' => ['%02d', 'H'], 'I' => ['%02d', 'I'], 'j' => ['%03d', 'j'],
|
165
254
|
'k' => ['%2d', 'H'], 'l' => ['%2d', 'I'], 'm' => ['%02d', 'm'], 'M' => ['%02d', 'M'],
|
166
|
-
'n' => '\n', 'p' => ['%s', 'p'], 'P' => ['%s', 'P'], '
|
167
|
-
'R' => '%H:%M', 's' => ['%d', 's'], 'S' => ['%02d', 'S'],
|
168
|
-
'T' => '%H:%M:%S', 'u' => ['%d', 'u'], 'U' => ['%02d', 'U'],
|
169
|
-
'w' => ['%d', 'w'], 'W' => ['%02d', 'W'],
|
255
|
+
'n' => '\n', 'p' => ['%s', 'p'], 'P' => ['%s', 'P'], 'q' => ['%01d', 'd'],
|
256
|
+
'r' => '%I:%M:%S %p', 'R' => '%H:%M', 's' => ['%d', 's'], 'S' => ['%02d', 'S'],
|
257
|
+
't' => '\t', 'T' => '%H:%M:%S', 'u' => ['%d', 'u'], 'U' => ['%02d', 'U'],
|
258
|
+
'V' => ['%02d', 'V'], 'w' => ['%d', 'w'], 'W' => ['%02d', 'W'],
|
170
259
|
'x' => When::Parts::Resource._instance('_m:CalendarFormats::Date'),
|
171
260
|
'X' => When::Parts::Resource._instance('_m:CalendarFormats::Time'),
|
172
261
|
'y' => ['%02d', 'y'], 'Y' => ['%4d', 'Y'], 'z' => ['%s', 'z'], 'Z' => ['%s', 'Z'],
|
@@ -230,7 +319,7 @@ module When
|
|
230
319
|
|
231
320
|
# 含まれる週
|
232
321
|
#
|
233
|
-
# @overload week_included(ord, wkst, opt, block)
|
322
|
+
# @overload week_included(ord, wkst, opt, &block)
|
234
323
|
# @param [Numeric, Range] ord 週の番号(default: 今週)
|
235
324
|
# 今週を 0 とする週番号(Integer) または週番号の範囲(Range)
|
236
325
|
# -1 - 先週
|
@@ -249,47 +338,17 @@ module When
|
|
249
338
|
# @return [Range] 含まれる週を範囲として表現する Range (block 指定なし)
|
250
339
|
# @return [Array] 含まれる週の各日をブロックに渡した結果の Array (block 指定あり)
|
251
340
|
#
|
252
|
-
def week_included(*args)
|
341
|
+
def week_included(*args, &block)
|
253
342
|
begin
|
254
343
|
first, length, wkst, opt = _range(args, 'MO')
|
255
|
-
|
256
|
-
when When::Coordinates::Residue
|
257
|
-
today = self.floor
|
258
|
-
begun = today.succ & wkst >> first-1
|
259
|
-
unless @frame.equal?(begun.frame)
|
260
|
-
begun = (@frame ^ today).succ & wkst >> first-1
|
261
|
-
middle = today
|
262
|
-
end
|
263
|
-
ended = begun.succ & wkst >> length-1
|
264
|
-
else
|
265
|
-
begun = ended = nil
|
266
|
-
if first <= 0
|
267
|
-
it = wkst.enum_for(self.floor, :reverse)
|
268
|
-
(1-first).times do
|
269
|
-
begun = it.next
|
270
|
-
end
|
271
|
-
else
|
272
|
-
it = wkst.enum_for(self.floor, :forward)
|
273
|
-
first.times do
|
274
|
-
begun = it.next
|
275
|
-
end
|
276
|
-
end
|
277
|
-
it = wkst.enum_for(begun, :forward)
|
278
|
-
(length+1).times do
|
279
|
-
ended = it.next
|
280
|
-
end
|
281
|
-
end
|
282
|
-
range = middle && block_given? ? [begun...middle, middle...ended] : [begun...ended]
|
283
|
-
|
344
|
+
range = wkst._range_for_week_included(self, first, length, block_given?)
|
284
345
|
rescue RangeError
|
285
|
-
range =
|
346
|
+
range = wkst._range_for_week_included(@frame ^ self, first, length)
|
286
347
|
end
|
287
348
|
|
288
|
-
return range
|
349
|
+
return range.first unless block_given?
|
289
350
|
|
290
|
-
(range.
|
291
|
-
yield(date, !opt.key?(:Range) || opt[:Range].include?(date.to_i) ? DAY : nil)
|
292
|
-
}}).unshift(yield(range[0].first, WEEK)).compact
|
351
|
+
wkst._column_for_week_included(self, range, opt, &block).unshift(yield(range[0].first, WEEK)).compact
|
293
352
|
end
|
294
353
|
|
295
354
|
# 含まれる月
|
@@ -319,7 +378,7 @@ module When
|
|
319
378
|
if wkst
|
320
379
|
(first...(first+length)).map {|i|
|
321
380
|
begun = self.floor(MONTH,DAY) + When::TM::PeriodDuration.new([0,i,0])
|
322
|
-
ended = begun +
|
381
|
+
ended = begun + P1M
|
323
382
|
ended = ended.prev until begun.cal_date[MONTH-1] == ended.cal_date[MONTH-1]
|
324
383
|
if ended.to_i <= begun.to_i
|
325
384
|
ended = begun
|
@@ -398,7 +457,7 @@ module When
|
|
398
457
|
result = [yield(begun, YEAR)]
|
399
458
|
while current < ended do
|
400
459
|
result << current.month_included(wkst, &block)
|
401
|
-
current +=
|
460
|
+
current += P1M
|
402
461
|
end
|
403
462
|
result.compact
|
404
463
|
}
|
@@ -425,14 +484,14 @@ module When
|
|
425
484
|
when date.most_significant_coordinate * 1 == year
|
426
485
|
return date
|
427
486
|
when date.most_significant_coordinate * 1 > year
|
428
|
-
next_date = (date-When::
|
487
|
+
next_date = (date-When::P1Y).floor(YEAR,DAY)
|
429
488
|
date = (date.to_i == next_date.to_i) ?
|
430
|
-
(date-When::
|
489
|
+
(date-When::P1Y*2).floor(YEAR,DAY) :
|
431
490
|
next_date
|
432
491
|
else
|
433
|
-
next_date = (date+When::
|
492
|
+
next_date = (date+When::P1Y).floor(YEAR,DAY)
|
434
493
|
date = (date.to_i == next_date.to_i) ?
|
435
|
-
(date+When::
|
494
|
+
(date+When::P1Y*2).floor(YEAR,DAY) :
|
436
495
|
next_date
|
437
496
|
end
|
438
497
|
raise RangeError, "can't find target date: #{self} -> #{year}" if done.key?(date.to_i)
|
@@ -479,9 +538,9 @@ module When
|
|
479
538
|
form_options = options.kind_of?(Hash) ? options : {}
|
480
539
|
form_options[:method] = :to_m17n unless form_options.key?(:method)
|
481
540
|
persistence = options.delete(:persistence) if options.kind_of?(Hash)
|
482
|
-
retrieved = When::CalendarNote::
|
541
|
+
retrieved = When::CalendarNote::NotesContainer.retrieve(persistence, self.to_i)
|
483
542
|
return retrieved unless retrieved == false
|
484
|
-
When::CalendarNote::
|
543
|
+
When::CalendarNote::NotesContainer.register(_m17n_form(_notes(options), form_options), persistence, self.to_i)
|
485
544
|
end
|
486
545
|
|
487
546
|
#
|
@@ -630,7 +689,7 @@ module When
|
|
630
689
|
#
|
631
690
|
# @return [When::BasicTypes::M17n]
|
632
691
|
#
|
633
|
-
def strftime(pattern, locale=nil)
|
692
|
+
def strftime(pattern=@frame.strftime, locale=nil)
|
634
693
|
pattern = m17n([pattern]*self.keys.length, nil, nil, {:locale=>self.keys}) if pattern.instance_of?(String)
|
635
694
|
pattern._printf([], locale) do |k, *t|
|
636
695
|
_strftime(k, pattern, [''])
|
@@ -649,12 +708,12 @@ module When
|
|
649
708
|
# @return [designator に依存]
|
650
709
|
#
|
651
710
|
def _term(designator, locale=nil, d=0, e=3)
|
652
|
-
designator = When::
|
711
|
+
designator = When::Locale.translate(designator,locale)
|
653
712
|
case designator
|
654
713
|
# 現在のロケールにおける曜日の省略名
|
655
|
-
when 'a' ; When.Resource('_co:
|
714
|
+
when 'a' ; When.Resource('_co:Common::Abbr_Day')[to_i % 7].translate(locale)
|
656
715
|
# 現在のロケールにおける曜日の完全な名前
|
657
|
-
when 'A' ; When.Resource('_co:
|
716
|
+
when 'A' ; When.Resource('_co:Common::Week')[to_i % 7].label.translate(locale)
|
658
717
|
when 'b' ; (name(MONTH-d).translate(locale))[/^.{1,#{e}}/] # 現在のロケールにおける月の省略名
|
659
718
|
when 'B' ; (name(MONTH-d).translate(locale)) # 現在のロケールにおける月の完全な名前
|
660
719
|
when 'C' ; year(d).div(100) # 世紀 (西暦年の上 2 桁)
|
@@ -670,7 +729,7 @@ module When
|
|
670
729
|
when 'M' ; minute(d) # 分
|
671
730
|
when 'p' ; (AMPM[hour(d).to_i.div(12)].translate(locale)).upcase # 現在のロケールにおける「午前」「午後」に相当する文字列
|
672
731
|
when 'P' ; (AMPM[hour(d).to_i.div(12)].translate(locale)).downcase # 前項を小文字で表記
|
673
|
-
when 's' ; universal_time / Duration::SECOND
|
732
|
+
when 's' ; universal_time / Duration::SECOND # 紀元 (1970-01-01T00:00:00Z) からの秒数
|
674
733
|
when 'S' ; second(d) # 秒 (10 進数表記)
|
675
734
|
when 'u' ; cwday # 週の何番目の日か(月曜日を 1 とする)
|
676
735
|
when 'U' ; yweek(6, 7, d) # 年の初めからの通算の週番号(日曜日始まり)
|
@@ -680,7 +739,7 @@ module When
|
|
680
739
|
when 'y' ; year(d) % 100 # 西暦の下2桁 (世紀部分を含まない年)
|
681
740
|
when 'Y' ; year(d) # 世紀部分を含めた ( 4 桁の) 西暦年
|
682
741
|
when 'z' ; clock.to_basic # +hhmm や -hhmm の形式のタイムゾーン
|
683
|
-
when 'Z' ; When::
|
742
|
+
when 'Z' ; When::Locale.translate(clock.tzname[0],locale) # タイムゾーンまたはゾーン名または省略名
|
684
743
|
else ; designator
|
685
744
|
end
|
686
745
|
end
|
@@ -729,7 +788,7 @@ module When
|
|
729
788
|
#
|
730
789
|
def _calendar_note(options)
|
731
790
|
calendar_note = options.delete(:calendar_note) if options.kind_of?(Hash)
|
732
|
-
calendar_note ||= @frame ? @frame.note : '
|
791
|
+
calendar_note ||= @frame ? @frame.note : 'JulianDay'
|
733
792
|
When.CalendarNote(calendar_note)
|
734
793
|
end
|
735
794
|
end
|
@@ -1196,8 +1255,9 @@ module When
|
|
1196
1255
|
# 準備
|
1197
1256
|
precision = [precision, 1 - @cal_date.length].max
|
1198
1257
|
precision = [precision, DAY].min
|
1199
|
-
terms
|
1200
|
-
ext_dg
|
1258
|
+
terms = []
|
1259
|
+
ext_dg = [(@extra_year_digits||1).to_i, 0].max
|
1260
|
+
year_dg = @frame.indices.length <= 2 ? 4 : 2
|
1201
1261
|
|
1202
1262
|
# 年
|
1203
1263
|
year_by_epoch = @cal_date[0]
|
@@ -1206,14 +1266,14 @@ module When
|
|
1206
1266
|
year_in_term = reverse ? -year_by_epoch : year_by_epoch
|
1207
1267
|
year_by_calendar = epoch + year_by_epoch if epoch
|
1208
1268
|
terms << year_in_term
|
1209
|
-
format = (0..99) === (year_in_term * 1) ? "%02d." : "%
|
1269
|
+
format = (0..99) === (year_in_term * 1) ? "%02d." : "%0#{year_dg}d."
|
1210
1270
|
if year_by_calendar && year_by_calendar != year_in_term
|
1211
1271
|
terms << (year_by_calendar * 1)
|
1212
|
-
format += "(%
|
1272
|
+
format += "(%0#{year_dg}d)"
|
1213
1273
|
end
|
1214
1274
|
else
|
1215
1275
|
terms << year_by_epoch
|
1216
|
-
format = (0..
|
1276
|
+
format = (0..(10**year_dg-1)) === (year_by_epoch * 1) ? "%0#{year_dg}d." : "%+0#{5+ext_dg}d."
|
1217
1277
|
end
|
1218
1278
|
|
1219
1279
|
# 月日
|
@@ -1227,7 +1287,7 @@ module When
|
|
1227
1287
|
date = Pair._format([format] + terms)
|
1228
1288
|
date.sub!(/([^\d])\(([-+\d]+)\)/, '(\2)\1') if era
|
1229
1289
|
date = date[0..-2] unless @frame.pair[precision-1] || date[-1..-1] != '.'
|
1230
|
-
date.gsub!(/\./, '-') if (@frame.indices.length <=
|
1290
|
+
date.gsub!(/\./, '-') if (@frame.indices.length <= 3) && !era
|
1231
1291
|
return date
|
1232
1292
|
end
|
1233
1293
|
end
|
data/lib/when_exe/locales/af.rb
CHANGED
@@ -5,8 +5,8 @@
|
|
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
|
7
7
|
|
8
|
-
module When
|
9
|
-
|
8
|
+
module When
|
9
|
+
module Locale
|
10
10
|
|
11
11
|
# from https://raw.github.com/svenfuchs/rails-i18n/master/rails/locale/af.yml
|
12
12
|
|
@@ -0,0 +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
|