when_exe 0.3.5 → 0.3.6
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.
- 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
|