when_exe 0.3.4 → 0.3.5
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/locales.rb +2 -2
- data/bin/when.rb +2 -2
- data/lib/when_exe.rb +161 -55
- data/lib/when_exe/basictypes.rb +34 -26
- data/lib/when_exe/calendarnote.rb +654 -0
- data/lib/when_exe/calendartypes.rb +49 -474
- data/lib/when_exe/coordinates.rb +141 -34
- data/lib/when_exe/core/compatibility.rb +22 -2
- data/lib/when_exe/core/extension.rb +47 -3
- data/lib/when_exe/ephemeris.rb +82 -109
- data/lib/when_exe/googlecalendar.rb +1 -1
- data/lib/when_exe/icalendar.rb +26 -14
- data/lib/when_exe/inspect.rb +82 -68
- data/lib/when_exe/locales/af.rb +1 -1
- data/lib/when_exe/locales/ar.rb +1 -1
- data/lib/when_exe/locales/az.rb +1 -1
- data/lib/when_exe/locales/bg.rb +1 -1
- data/lib/when_exe/locales/bn.rb +1 -1
- data/lib/when_exe/locales/bs.rb +1 -1
- data/lib/when_exe/locales/ca.rb +1 -1
- data/lib/when_exe/locales/cs.rb +1 -1
- data/lib/when_exe/locales/cy.rb +1 -1
- data/lib/when_exe/locales/da.rb +1 -1
- data/lib/when_exe/locales/de.rb +1 -1
- data/lib/when_exe/locales/de_AT.rb +1 -1
- data/lib/when_exe/locales/de_CH.rb +1 -1
- data/lib/when_exe/locales/el.rb +1 -1
- data/lib/when_exe/locales/en.rb +1 -1
- data/lib/when_exe/locales/en_AU.rb +1 -1
- data/lib/when_exe/locales/en_CA.rb +1 -1
- data/lib/when_exe/locales/en_GB.rb +1 -1
- data/lib/when_exe/locales/en_IE.rb +1 -1
- data/lib/when_exe/locales/en_IN.rb +1 -1
- data/lib/when_exe/locales/en_NZ.rb +1 -1
- data/lib/when_exe/locales/en_US.rb +1 -1
- data/lib/when_exe/locales/eo.rb +1 -1
- data/lib/when_exe/locales/es.rb +1 -1
- data/lib/when_exe/locales/es_419.rb +1 -1
- data/lib/when_exe/locales/es_AR.rb +1 -1
- data/lib/when_exe/locales/es_CL.rb +1 -1
- data/lib/when_exe/locales/es_CO.rb +1 -1
- data/lib/when_exe/locales/es_CR.rb +1 -1
- data/lib/when_exe/locales/es_EC.rb +1 -1
- data/lib/when_exe/locales/es_MX.rb +1 -1
- data/lib/when_exe/locales/es_PA.rb +1 -1
- data/lib/when_exe/locales/es_PE.rb +1 -1
- data/lib/when_exe/locales/es_VE.rb +1 -1
- data/lib/when_exe/locales/et.rb +1 -1
- data/lib/when_exe/locales/eu.rb +1 -1
- data/lib/when_exe/locales/fa.rb +1 -1
- data/lib/when_exe/locales/fi.rb +1 -1
- data/lib/when_exe/locales/fr.rb +1 -1
- data/lib/when_exe/locales/fr_CA.rb +1 -1
- data/lib/when_exe/locales/fr_CH.rb +1 -1
- data/lib/when_exe/locales/gl.rb +1 -1
- data/lib/when_exe/locales/he.rb +1 -1
- data/lib/when_exe/locales/hi.rb +1 -1
- data/lib/when_exe/locales/hi_IN.rb +1 -1
- data/lib/when_exe/locales/hr.rb +1 -1
- data/lib/when_exe/locales/hu.rb +1 -1
- data/lib/when_exe/locales/id.rb +1 -1
- data/lib/when_exe/locales/is.rb +1 -1
- data/lib/when_exe/locales/it.rb +1 -1
- data/lib/when_exe/locales/it_CH.rb +1 -1
- data/lib/when_exe/locales/ja.rb +1 -1
- data/lib/when_exe/locales/kn.rb +1 -1
- data/lib/when_exe/locales/ko.rb +1 -1
- data/lib/when_exe/locales/lo.rb +1 -1
- data/lib/when_exe/locales/locales.rb +1 -1
- data/lib/when_exe/locales/lt.rb +1 -1
- data/lib/when_exe/locales/lv.rb +1 -1
- data/lib/when_exe/locales/mk.rb +1 -1
- data/lib/when_exe/locales/mn.rb +1 -1
- data/lib/when_exe/locales/ms.rb +1 -1
- data/lib/when_exe/locales/nb.rb +1 -1
- data/lib/when_exe/locales/ne.rb +1 -1
- data/lib/when_exe/locales/nl.rb +1 -1
- data/lib/when_exe/locales/nn.rb +1 -1
- data/lib/when_exe/locales/or.rb +1 -1
- data/lib/when_exe/locales/pl.rb +1 -1
- data/lib/when_exe/locales/pt.rb +1 -1
- data/lib/when_exe/locales/pt_BR.rb +1 -1
- data/lib/when_exe/locales/rm.rb +1 -1
- data/lib/when_exe/locales/ro.rb +1 -1
- data/lib/when_exe/locales/ru.rb +1 -1
- data/lib/when_exe/locales/sk.rb +1 -1
- data/lib/when_exe/locales/sl.rb +1 -1
- data/lib/when_exe/locales/sr.rb +1 -1
- data/lib/when_exe/locales/sv.rb +1 -1
- data/lib/when_exe/locales/sw.rb +1 -1
- data/lib/when_exe/locales/th.rb +1 -1
- data/lib/when_exe/locales/tl.rb +1 -1
- data/lib/when_exe/locales/tr.rb +1 -1
- data/lib/when_exe/locales/uk.rb +1 -1
- data/lib/when_exe/locales/ur.rb +1 -1
- data/lib/when_exe/locales/uz.rb +1 -1
- data/lib/when_exe/locales/vi.rb +1 -1
- data/lib/when_exe/locales/wo.rb +1 -1
- data/lib/when_exe/locales/zh_CN.rb +1 -1
- data/lib/when_exe/locales/zh_HK.rb +1 -1
- data/lib/when_exe/locales/zh_TW.rb +1 -1
- data/lib/when_exe/mini_application.rb +6 -2
- data/lib/when_exe/parts/enumerator.rb +13 -8
- data/lib/when_exe/parts/geometric_complex.rb +3 -5
- data/lib/when_exe/parts/locale.rb +185 -28
- data/lib/when_exe/parts/method_cash.rb +20 -10
- data/lib/when_exe/parts/resource.rb +154 -76
- data/lib/when_exe/parts/timezone.rb +11 -6
- data/lib/when_exe/region/bahai.rb +2 -2
- data/lib/when_exe/region/balinese.rb +296 -296
- data/lib/when_exe/region/chinese.rb +564 -564
- data/lib/when_exe/region/chinese_calendar.rb +5 -1
- data/lib/when_exe/region/chinese_epoch.rb +47 -102
- data/lib/when_exe/region/chinese_twin.rb +798 -0
- data/lib/when_exe/region/christian.rb +314 -338
- data/lib/when_exe/region/coptic.rb +88 -0
- data/lib/when_exe/region/ephemeric_notes.rb +322 -307
- data/lib/when_exe/region/french.rb +2 -2
- data/lib/when_exe/region/indian.rb +361 -272
- data/lib/when_exe/region/iranian.rb +2 -2
- data/lib/when_exe/region/islamic.rb +3 -3
- data/lib/when_exe/region/japanese.rb +1 -1
- data/lib/when_exe/region/japanese_notes.rb +165 -103
- data/lib/when_exe/region/japanese_residues.rb +56 -55
- data/lib/when_exe/region/japanese_twin.rb +228 -0
- data/lib/when_exe/region/javanese.rb +2 -2
- data/lib/when_exe/region/jewish.rb +2 -2
- data/lib/when_exe/region/korean.rb +4 -4
- data/lib/when_exe/region/m17n.rb +19 -19
- data/lib/when_exe/region/martian.rb +21 -9
- data/lib/when_exe/region/mayan.rb +19 -11
- data/lib/when_exe/region/moon.rb +7 -7
- data/lib/when_exe/region/nihon_shoki.rb +7 -7
- data/lib/when_exe/region/roman.rb +100 -100
- data/lib/when_exe/region/shire.rb +130 -147
- data/lib/when_exe/region/thai.rb +2 -2
- data/lib/when_exe/region/tibetan.rb +2 -2
- data/lib/when_exe/region/vietnamese.rb +383 -114
- data/lib/when_exe/region/world.rb +112 -129
- data/lib/when_exe/timestandard.rb +12 -1
- data/lib/when_exe/tmposition.rb +28 -14
- data/lib/when_exe/tmreference.rb +96 -93
- data/lib/when_exe/version.rb +1 -1
- data/test/examples/Terms.m17n +2 -2
- data/test/examples/sample.json +16 -0
- data/test/examples/sample.xml +1 -1
- data/test/test.rb +4 -0
- data/test/test/basictypes.rb +2 -2
- data/test/test/calendarnote.rb +69 -0
- data/test/test/calendartypes.rb +41 -1
- data/test/test/coordinates.rb +12 -1
- data/test/test/ephemeris.rb +13 -66
- data/test/test/icalendar.rb +3 -3
- data/test/test/inspect.rb +1 -1
- data/test/test/parts.rb +7 -4
- data/test/test/region/chinese.rb +45 -0
- data/test/test/region/coptic.rb +27 -0
- data/test/test/region/indian.rb +1 -1
- data/test/test/region/japanese.rb +4 -4
- data/test/test/region/jewish.rb +1 -1
- data/test/test/region/m17n.rb +7 -5
- data/test/test/region/residue.rb +2 -2
- data/test/test/region/vietnamese.rb +102 -0
- data/test/test/timestandard.rb +81 -0
- data/test/test/tmposition.rb +1 -1
- data/test/test/tmreference.rb +1 -1
- data/when_exe.gemspec +2 -2
- metadata +16 -7
data/lib/when_exe/icalendar.rb
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
# 他のソフトウェアとの互換性を損なう可能性があるが、本ライブラリは両方の動作の違いを
|
|
30
30
|
# 記述できる必要があると判断。
|
|
31
31
|
# * BYDAY/c=n*e±s(,..)
|
|
32
|
-
# c で指定したWhen::
|
|
32
|
+
# c で指定したWhen::CalendarNoteオブジェクトのイベントeのうち、
|
|
33
33
|
# n番目のものについて、その±s日目
|
|
34
34
|
# デフォルトは n=all, s=0, cとeは省略不可(eはcのメソッドとして定義されている必要がある)
|
|
35
35
|
# example: 'BYDAY/Christian=easter-2' は、キリスト教の聖金曜日
|
|
@@ -505,6 +505,7 @@ module When::V
|
|
|
505
505
|
}
|
|
506
506
|
return copy
|
|
507
507
|
end
|
|
508
|
+
alias :subset :intersection
|
|
508
509
|
|
|
509
510
|
# @private
|
|
510
511
|
def _enumerator_list(args)
|
|
@@ -534,10 +535,6 @@ module When::V
|
|
|
534
535
|
class << self
|
|
535
536
|
include When::Parts::Resource::Pool
|
|
536
537
|
|
|
537
|
-
# 最大打ち切り時間
|
|
538
|
-
# @return [When::TM::IntervalLength]
|
|
539
|
-
attr_reader :default_until
|
|
540
|
-
|
|
541
538
|
# When::V::Event Class のグローバルな設定を行う
|
|
542
539
|
#
|
|
543
540
|
# @param [When::TM::IntervalLength] default_until
|
|
@@ -557,6 +554,21 @@ module When::V
|
|
|
557
554
|
@_pool = {}
|
|
558
555
|
@default_until = default_until
|
|
559
556
|
end
|
|
557
|
+
|
|
558
|
+
# 設定情報を取得する
|
|
559
|
+
#
|
|
560
|
+
# @return [Hash] 設定情報
|
|
561
|
+
#
|
|
562
|
+
def _setup_info
|
|
563
|
+
{:until => default_until}
|
|
564
|
+
end
|
|
565
|
+
|
|
566
|
+
# 最大打ち切り時間
|
|
567
|
+
#
|
|
568
|
+
# @return [When::TM::IntervalLength]
|
|
569
|
+
def default_until
|
|
570
|
+
@default_until ||= 1000*When::TM::Duration::YEAR
|
|
571
|
+
end
|
|
560
572
|
end
|
|
561
573
|
|
|
562
574
|
# SUMMARY Property
|
|
@@ -672,8 +684,8 @@ module When::V
|
|
|
672
684
|
#
|
|
673
685
|
# @overload each(first, direction, count_limit)
|
|
674
686
|
# @param [When::TM::TemporalPosition] first 始点
|
|
675
|
-
# @param [Symbol] direction :forward - 昇順, :reverse - 降順
|
|
676
|
-
# @param [Integer] count_limit 繰り返し回数(
|
|
687
|
+
# @param [Symbol] direction :forward - 昇順, :reverse - 降順 (options[:direction]で渡してもよい)
|
|
688
|
+
# @param [Integer] count_limit 繰り返し回数(デフォルトは指定なし, options[:count_limit]で渡してもよい)
|
|
677
689
|
#
|
|
678
690
|
# @return [Enumerator]
|
|
679
691
|
#
|
|
@@ -923,7 +935,7 @@ module When::V
|
|
|
923
935
|
|
|
924
936
|
# @private
|
|
925
937
|
def _need_validate
|
|
926
|
-
|
|
938
|
+
@tz_difference != 0
|
|
927
939
|
end
|
|
928
940
|
|
|
929
941
|
private
|
|
@@ -942,7 +954,7 @@ module When::V
|
|
|
942
954
|
@standard = tz if (@standard==nil || tz.universal_time > @standard.universal_time)
|
|
943
955
|
end
|
|
944
956
|
end
|
|
945
|
-
@
|
|
957
|
+
@tz_difference = @standard.universal_time - @daylight.universal_time
|
|
946
958
|
|
|
947
959
|
name = @property['tzid'].object
|
|
948
960
|
case self.class[name]
|
|
@@ -1057,7 +1069,7 @@ module When::V
|
|
|
1057
1069
|
@options = When::Parts::Enumerator._options(args)
|
|
1058
1070
|
@exdate = @options.delete(:exdate)
|
|
1059
1071
|
@exevent = @options.delete(:exevent)
|
|
1060
|
-
@parent, @rule, @dtstart, @duration, *
|
|
1072
|
+
@parent, @rule, @dtstart, @duration, *rest = args
|
|
1061
1073
|
@dtstart = When.when?(@dtstart)
|
|
1062
1074
|
@rule = self.class._decode_rule(@rule, @dtstart) if (@rule.kind_of?(String))
|
|
1063
1075
|
@logics = @rule[:logics]
|
|
@@ -1071,7 +1083,7 @@ module When::V
|
|
|
1071
1083
|
@dtstart = @dtstart.dup._copy({:tz_prop=>nil, :validate=>:done})
|
|
1072
1084
|
end
|
|
1073
1085
|
end
|
|
1074
|
-
_range(
|
|
1086
|
+
_range(rest)
|
|
1075
1087
|
_rewind
|
|
1076
1088
|
end
|
|
1077
1089
|
|
|
@@ -1205,7 +1217,7 @@ module When::V
|
|
|
1205
1217
|
rule['UNTIL'] = When.when?(rule['UNTIL'])
|
|
1206
1218
|
end
|
|
1207
1219
|
unless rule['UNTIL']
|
|
1208
|
-
rule['UNTIL'] = When.now +
|
|
1220
|
+
rule['UNTIL'] = When.now + Event.default_until
|
|
1209
1221
|
end
|
|
1210
1222
|
rule['COUNT'] = rule['COUNT'].to_i if (rule['COUNT'])
|
|
1211
1223
|
rule['INTERVAL'] = (rule['INTERVAL'] || 1).to_i
|
|
@@ -1490,9 +1502,9 @@ module When::V
|
|
|
1490
1502
|
shift = (period[PostFreqIndex[@by_part]] != 0)
|
|
1491
1503
|
raise ArgumentError, "n*e+/-s format not permitted" if (nth || shift) && @freq_index >= When::DAY
|
|
1492
1504
|
if (nth==nil || nth>0)
|
|
1493
|
-
enum = @ref.enum_for(lower_bound, :forward, spec)
|
|
1505
|
+
enum = @ref.enum_for(lower_bound, :forward, {:event=>spec})
|
|
1494
1506
|
else
|
|
1495
|
-
enum = @ref.enum_for(higher_bound, :reverse, spec)
|
|
1507
|
+
enum = @ref.enum_for(higher_bound, :reverse, {:event=>spec})
|
|
1496
1508
|
end
|
|
1497
1509
|
if (nth)
|
|
1498
1510
|
date = nil
|
data/lib/when_exe/inspect.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
=begin
|
|
3
|
-
Copyright (C) 2011-
|
|
3
|
+
Copyright (C) 2011-2014 Takashi SUGA
|
|
4
4
|
|
|
5
5
|
You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
|
|
6
6
|
=end
|
|
@@ -8,6 +8,10 @@
|
|
|
8
8
|
module When
|
|
9
9
|
module Parts::Resource
|
|
10
10
|
|
|
11
|
+
# option key for _m17n_form
|
|
12
|
+
# @private
|
|
13
|
+
FormOptions = [:precision, :camel, :method, :locale, :prefix]
|
|
14
|
+
|
|
11
15
|
#
|
|
12
16
|
# オブジェクトの内容を Hash 化
|
|
13
17
|
#
|
|
@@ -15,9 +19,9 @@ module When
|
|
|
15
19
|
# @param [Hash] options 下記のとおり
|
|
16
20
|
# @option options [Numeric] :precision 指定があれば「イベント名(イベント時刻)」出力の時刻を指定の精度に丸める
|
|
17
21
|
# @option options [Boolean] :camel true ならシンボルを camel case にする
|
|
22
|
+
# @option options [Symbol] :method _to_hash_value で変換に用いるメソッド(:to_m17n, :iri など, 指定なしなら変換しない)
|
|
18
23
|
# @option options [String] :locale 文字列化の locale(指定なしは M17nオブジェクトに変換)
|
|
19
|
-
# @option options [Boolean] :
|
|
20
|
-
# @option options [Boolean] :residue true なら Residue をそのまま出力
|
|
24
|
+
# @option options [Boolean] :prefix true ならIRI の先頭部分を簡約表現にする
|
|
21
25
|
# @option options [Object] :その他 各クラス#_to_h を参照
|
|
22
26
|
#
|
|
23
27
|
# @return [Hash] (Whenモジュール内のクラスは文字列 or M17n化)
|
|
@@ -33,7 +37,8 @@ module When
|
|
|
33
37
|
#
|
|
34
38
|
# @return [String] to_h 結果を JSON文字列化したもの
|
|
35
39
|
#
|
|
36
|
-
def
|
|
40
|
+
def to_json(options={})
|
|
41
|
+
options[:method] = :to_m17n unless options.key?(:method)
|
|
37
42
|
JSON.dump(to_h(options))
|
|
38
43
|
end
|
|
39
44
|
|
|
@@ -41,7 +46,15 @@ module When
|
|
|
41
46
|
# _m17n_form のための要素生成
|
|
42
47
|
# @private
|
|
43
48
|
def _to_hash_value(options={})
|
|
44
|
-
|
|
49
|
+
method = options[:method]
|
|
50
|
+
if method.kind_of?(Symbol)
|
|
51
|
+
if respond_to?(method, true) && method != :iri
|
|
52
|
+
return send(method)
|
|
53
|
+
elsif registered?
|
|
54
|
+
return iri(options[:prefix])
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
self
|
|
45
58
|
end
|
|
46
59
|
|
|
47
60
|
private
|
|
@@ -59,7 +72,7 @@ module When
|
|
|
59
72
|
hash = {}
|
|
60
73
|
self.class::HashProperty.each do |property|
|
|
61
74
|
method, skip = property
|
|
62
|
-
value = send(method)
|
|
75
|
+
value = respond_to?(method, true) ? send(method) : skip
|
|
63
76
|
hash[method] = value unless value == skip || value.class == skip
|
|
64
77
|
end
|
|
65
78
|
hash
|
|
@@ -72,9 +85,9 @@ module When
|
|
|
72
85
|
# @param [Hash] options 下記の通り
|
|
73
86
|
# @option options [Numeric] :precision 指定があれば「イベント名(イベント時刻)」出力の時刻を指定の精度に丸める
|
|
74
87
|
# @option options [Boolean] :camel true ならシンボルを camel case にする
|
|
88
|
+
# @option options [Symbol] :method _to_hash_value で変換に用いるメソッド(:to_m17n, :iri など, 指定なしなら変換しない)
|
|
75
89
|
# @option options [String] :locale 文字列化の locale(指定なしは M17nオブジェクトに変換)
|
|
76
|
-
# @option options [Boolean] :
|
|
77
|
-
# @option options [Boolean] :residue true なら Residue をそのまま出力
|
|
90
|
+
# @option options [Boolean] :prefix true ならIRI の先頭部分を簡約表現にする
|
|
78
91
|
#
|
|
79
92
|
# @return [Hash, Array] 変換結果
|
|
80
93
|
#
|
|
@@ -89,7 +102,7 @@ module When
|
|
|
89
102
|
s + [_m17n_form(k, options), _m17n_form(element[k], options)]
|
|
90
103
|
})]
|
|
91
104
|
when Array ; element.map {|e| _m17n_form(e, options)}
|
|
92
|
-
when Class ; When::Parts::Resource._path_with_prefix(element, options[:
|
|
105
|
+
when Class ; When::Parts::Resource._path_with_prefix(element, options[:prefix])
|
|
93
106
|
when Symbol ; options[:camel] ? element.to_s.split(/_/).map {|e| e.capitalize}.join('').to_sym : element
|
|
94
107
|
when Numeric, FalseClass, TrueClass ; element
|
|
95
108
|
else ; element.to_s
|
|
@@ -109,7 +122,7 @@ module When
|
|
|
109
122
|
def to_m17n
|
|
110
123
|
return m17n(@remainder.to_s) unless label
|
|
111
124
|
return label + "(#{difference})" unless @format
|
|
112
|
-
label[0...0] +
|
|
125
|
+
(label[0...0] + @format) % [label, difference, difference+1]
|
|
113
126
|
end
|
|
114
127
|
|
|
115
128
|
# 文字列化
|
|
@@ -119,23 +132,22 @@ module When
|
|
|
119
132
|
def to_s
|
|
120
133
|
return @remainder.to_s unless label
|
|
121
134
|
return label.to_s + "(#{difference})" unless @format
|
|
122
|
-
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
#
|
|
126
|
-
# to_h のための要素生成
|
|
127
|
-
# @private
|
|
128
|
-
def _to_hash_value(options={})
|
|
129
|
-
options[:residue] ? self : to_m17n
|
|
135
|
+
@format.to_s % [label.to_s, difference, difference+1]
|
|
130
136
|
end
|
|
131
137
|
end
|
|
132
138
|
|
|
133
139
|
class Pair
|
|
134
140
|
#
|
|
135
141
|
# to_h のための要素生成
|
|
142
|
+
#
|
|
143
|
+
# @param [Hash] options 下記のとおり
|
|
144
|
+
# @option options [Symbol] :method :to_m17n なら to_s を返す、その他は self を返す
|
|
145
|
+
#
|
|
146
|
+
# @return [String, When::Coordinates::Pair]
|
|
147
|
+
#
|
|
136
148
|
# @private
|
|
137
149
|
def _to_hash_value(options={})
|
|
138
|
-
to_s
|
|
150
|
+
options[:method] == :to_m17n ? to_s : self
|
|
139
151
|
end
|
|
140
152
|
end
|
|
141
153
|
end
|
|
@@ -162,10 +174,6 @@ module When
|
|
|
162
174
|
}
|
|
163
175
|
|
|
164
176
|
class << self
|
|
165
|
-
|
|
166
|
-
# strftime で用いる書式のハッシュ
|
|
167
|
-
attr_accessor :format
|
|
168
|
-
|
|
169
177
|
# When::TM::TemporalPosition Class のグローバルな設定を行う
|
|
170
178
|
#
|
|
171
179
|
# @param [Hash] format strftime で用いる記号の定義
|
|
@@ -177,6 +185,19 @@ module When
|
|
|
177
185
|
def _setup_(format=nil)
|
|
178
186
|
@format = format ? Format.merge(format) : Format
|
|
179
187
|
end
|
|
188
|
+
|
|
189
|
+
# 設定情報を取得する
|
|
190
|
+
#
|
|
191
|
+
# @return [Hash] 設定情報
|
|
192
|
+
#
|
|
193
|
+
def _setup_info
|
|
194
|
+
{:format => format}
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
# strftime で用いる書式のハッシュ
|
|
198
|
+
def format
|
|
199
|
+
@format ||= Format
|
|
200
|
+
end
|
|
180
201
|
end
|
|
181
202
|
|
|
182
203
|
#
|
|
@@ -190,11 +211,12 @@ module When
|
|
|
190
211
|
|
|
191
212
|
#
|
|
192
213
|
# 時法名
|
|
214
|
+
# @param [Boolean] prefix true ならIRI の先頭部分を簡約表現にする
|
|
193
215
|
#
|
|
194
216
|
# @return [Array<String>] String 時法の IRI
|
|
195
217
|
#
|
|
196
|
-
def clock_name
|
|
197
|
-
[
|
|
218
|
+
def clock_name(prefix=true)
|
|
219
|
+
[clock.iri(prefix)]
|
|
198
220
|
end
|
|
199
221
|
|
|
200
222
|
#
|
|
@@ -215,8 +237,8 @@ module When
|
|
|
215
237
|
# 0 - 今週
|
|
216
238
|
# +1 - 来週
|
|
217
239
|
# @param [String] wkst 週の開始曜日(defaultは 月曜)
|
|
218
|
-
# @param [When::
|
|
219
|
-
# @param [Array<When::
|
|
240
|
+
# @param [When::CalendarNote] wkst 暦注オブジェクト
|
|
241
|
+
# @param [Array<When::CalendarNote, String>] wkst 暦注オブジェクトとそのイベントメソッド名
|
|
220
242
|
# (暦注オブジェクトは、そのIRI文字列を指定しても良い)
|
|
221
243
|
# @param [Hash] opt 下記の通り
|
|
222
244
|
# @option opt [Range] :Range 上位繰り返し範囲(ユリウス通日...ユリウス通日)
|
|
@@ -279,8 +301,8 @@ module When
|
|
|
279
301
|
# 0 - 今月
|
|
280
302
|
# +1 - 来月
|
|
281
303
|
# @param [String] wkst 週の開始曜日(defaultはなし)
|
|
282
|
-
# @param [When::
|
|
283
|
-
# @param [Array<When::
|
|
304
|
+
# @param [When::CalendarNote] wkst 暦注オブジェクト
|
|
305
|
+
# @param [Array<When::CalendarNote, String>] wkst 暦注オブジェクトとそのイベントメソッド名
|
|
284
306
|
# (暦注オブジェクトは、そのIRI文字列を指定しても良い)
|
|
285
307
|
# @param [Hash] opt 下記の通り
|
|
286
308
|
# @option opt [Range] :Range 上位繰り返し範囲(ユリウス通日...ユリウス通日)
|
|
@@ -353,8 +375,8 @@ module When
|
|
|
353
375
|
# 0 - 今年
|
|
354
376
|
# +1 - 来年
|
|
355
377
|
# @param [String] wkst 週の開始曜日(defaultはなし)
|
|
356
|
-
# @param [When::
|
|
357
|
-
# @param [Array<When::
|
|
378
|
+
# @param [When::CalendarNote] wkst 暦注オブジェクト
|
|
379
|
+
# @param [Array<When::CalendarNote, String>] wkst 暦注オブジェクトとそのイベントメソッド名
|
|
358
380
|
# (暦注オブジェクトは、そのIRI文字列を指定しても良い)
|
|
359
381
|
# @param [Hash] opt 下記の通り
|
|
360
382
|
# @option opt [Range] :Range 上位繰り返し範囲(ユリウス通日...ユリウス通日)
|
|
@@ -446,15 +468,20 @@ module When
|
|
|
446
468
|
# @param [String] options { :notes => String } という Hash の指定と等価
|
|
447
469
|
# @param [Integer] options { :indices => Integer } という Hash の指定と等価
|
|
448
470
|
# @param [Hash] options 下記のとおり
|
|
449
|
-
# @option options [When::
|
|
450
|
-
# @option options [Object] その他のキー {When::
|
|
471
|
+
# @option options [When::CalendarNote, String] :calendar_note 暦注を計算する暦注オブジェクトまたはそのIRI
|
|
472
|
+
# @option options [Object] その他のキー {When::CalendarNote#notes} を参照
|
|
451
473
|
#
|
|
452
474
|
# @return [Array<Array<Hash{:note=>note, :value=>value}>>]
|
|
453
475
|
# [ note [String, When::BasicTypes::M17n] 暦注名 ]
|
|
454
476
|
# [ value [String, When::BasicTypes::M17n, When::Coordinates::Residue] 暦注の値 ]
|
|
455
477
|
#
|
|
456
478
|
def notes(options={})
|
|
457
|
-
|
|
479
|
+
form_options = options.kind_of?(Hash) ? options : {}
|
|
480
|
+
form_options[:method] = :to_m17n unless form_options.key?(:method)
|
|
481
|
+
persistence = options.delete(:persistence) if options.kind_of?(Hash)
|
|
482
|
+
retrieved = When::CalendarNote::Notes.retrieve(persistence, self.to_i)
|
|
483
|
+
return retrieved unless retrieved == false
|
|
484
|
+
When::CalendarNote::Notes.register(_m17n_form(_notes(options), form_options), persistence, self.to_i)
|
|
458
485
|
end
|
|
459
486
|
|
|
460
487
|
#
|
|
@@ -463,8 +490,8 @@ module When
|
|
|
463
490
|
# @param [String] options { :notes => String } という Hash の指定と等価
|
|
464
491
|
# @param [Integer] options { :indices => Integer } という Hash の指定と等価
|
|
465
492
|
# @param [Hash] options 下記のとおり
|
|
466
|
-
# @option options [When::
|
|
467
|
-
# @option options [Object] その他のキー {When::
|
|
493
|
+
# @option options [When::CalendarNote, String] :calendar_note 暦注を計算する暦注オブジェクトまたはそのIRI
|
|
494
|
+
# @option options [Object] その他のキー {When::CalendarNote#notes} を参照
|
|
468
495
|
#
|
|
469
496
|
# @return [Array<Array<Hash{:note=>note, :value=>value}>>]
|
|
470
497
|
# [ note [String, When::BasicTypes::M17n, When::Coordinates::Residue] 暦注名 ]
|
|
@@ -487,7 +514,7 @@ module When
|
|
|
487
514
|
# @param [Integer] options { :indices => Integer } という Hash の指定と等価
|
|
488
515
|
# @param [Hash] options 下記のとおり
|
|
489
516
|
# @option options [Object] :value 確認する暦注の値
|
|
490
|
-
# @option options [Object] その他のキー {When::
|
|
517
|
+
# @option options [Object] その他のキー {When::CalendarNote#notes} を参照
|
|
491
518
|
#
|
|
492
519
|
# @return [Boolean]
|
|
493
520
|
# [ true - 暦注が一致 ]
|
|
@@ -505,7 +532,7 @@ module When
|
|
|
505
532
|
# @param [Hash] options 下記のとおり
|
|
506
533
|
# @option options [String] :event 確認するイベント名
|
|
507
534
|
# @option options [Object] :value 確認する暦注の値
|
|
508
|
-
# @option options [Object] その他のキー {When::
|
|
535
|
+
# @option options [Object] その他のキー {When::CalendarNote#notes} を参照
|
|
509
536
|
#
|
|
510
537
|
# @return [Boolean]
|
|
511
538
|
# [ true - 該当する ]
|
|
@@ -530,15 +557,15 @@ module When
|
|
|
530
557
|
# @param [String] options { :notes => String } という Hash の指定と等価
|
|
531
558
|
# @param [Integer] options { :indices => Integer } という Hash の指定と等価
|
|
532
559
|
# @param [Hash] options 下記のとおり
|
|
533
|
-
# @option options [When::
|
|
534
|
-
# @option options [Object] その他のキー {When::
|
|
560
|
+
# @option options [When::CalendarNote, String] :calendar_note 暦注を計算する暦注オブジェクトまたはそのIRI
|
|
561
|
+
# @option options [Object] その他のキー {When::CalendarNote#notes} を参照
|
|
535
562
|
#
|
|
536
563
|
# @return [Hash]
|
|
537
564
|
# - :sdn 日の通し番号 - ユリウス通日(Integer)
|
|
538
565
|
# - :calendar calendar_name の結果 - Array<暦法または暦年代(, 付属情報..)>
|
|
539
566
|
# - :notes Hash (の Array (の Array)) - _notes(options)
|
|
540
567
|
# clock が定義されている場合、さらに下記も出力する
|
|
541
|
-
# - :clock 時計(When::
|
|
568
|
+
# - :clock 時計(When::Parts::Timezone::Base)
|
|
542
569
|
# - :clk_time to_clock_time の結果 - ( 日, 時, 分, 秒 )
|
|
543
570
|
# - :dynamical dynamical_time / 秒
|
|
544
571
|
# - :universal universal_time / 秒
|
|
@@ -582,32 +609,19 @@ module When
|
|
|
582
609
|
to_m17n(*args).to_s
|
|
583
610
|
end
|
|
584
611
|
|
|
585
|
-
#
|
|
586
|
-
#
|
|
587
|
-
# @overload to_uri()
|
|
612
|
+
# caret 付きの frame 名
|
|
588
613
|
#
|
|
589
614
|
# @return [String]
|
|
590
615
|
#
|
|
591
|
-
|
|
592
|
-
_to_uri(to_s(*args))
|
|
593
|
-
end
|
|
594
|
-
|
|
595
|
-
# URI要素化(日付のみ) - 日付の部分をURI表現の要素として用いる形式に変換
|
|
616
|
+
# @note 暦年代付きかまたは frame がグレゴリオ暦の場合は空文字列を返す
|
|
596
617
|
#
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
end
|
|
604
|
-
|
|
605
|
-
def _to_uri(date)
|
|
606
|
-
uri = date.gsub(/\./, '-').gsub(/%/, '@')
|
|
607
|
-
uri += '^^' + @frame.iri.split(/\//)[-1] unless @calendar_era_name || @frame == When.Calendar('Gregorian')
|
|
608
|
-
uri
|
|
618
|
+
def caret_frame
|
|
619
|
+
prefix = When::Parts::Resource.base_uri + 'CalendarTypes/'
|
|
620
|
+
path = frame.iri
|
|
621
|
+
return '' if @calendar_era_name || path == prefix + 'Gregorian'
|
|
622
|
+
path = path[prefix.length..-1] if path.index(prefix) == 0
|
|
623
|
+
'^^' + path
|
|
609
624
|
end
|
|
610
|
-
private :_to_uri
|
|
611
625
|
|
|
612
626
|
# 指定の書式による多言語対応文字列化 - pattern で指定した書式で多言語対応文字列化する
|
|
613
627
|
#
|
|
@@ -634,7 +648,7 @@ module When
|
|
|
634
648
|
#
|
|
635
649
|
# @return [designator に依存]
|
|
636
650
|
#
|
|
637
|
-
def
|
|
651
|
+
def _term(designator, locale=nil, d=0, e=3)
|
|
638
652
|
designator = When::Parts::Locale.translate(designator,locale)
|
|
639
653
|
case designator
|
|
640
654
|
# 現在のロケールにおける曜日の省略名
|
|
@@ -688,11 +702,11 @@ module When
|
|
|
688
702
|
when /^%%/
|
|
689
703
|
format += '%%'
|
|
690
704
|
when /^%/
|
|
691
|
-
action =
|
|
705
|
+
action = TemporalPosition.format[c[-1..-1]]
|
|
692
706
|
case action
|
|
693
707
|
when Array
|
|
694
708
|
format += action[0]
|
|
695
|
-
terms <<
|
|
709
|
+
terms << _term(action[1], locale, c[1..-2].to_i, e||3)
|
|
696
710
|
when String
|
|
697
711
|
action = action.translate(locale) if action.kind_of?(When::BasicTypes::M17n)
|
|
698
712
|
if (action =~ /%/)
|
|
@@ -709,7 +723,7 @@ module When
|
|
|
709
723
|
end
|
|
710
724
|
|
|
711
725
|
#
|
|
712
|
-
# 使用する When::
|
|
726
|
+
# 使用する When::CalendarNote を決定する
|
|
713
727
|
#
|
|
714
728
|
# options に副作用があることに注意
|
|
715
729
|
#
|
|
@@ -916,8 +930,8 @@ module When
|
|
|
916
930
|
# @param [String] options { :notes => String } という Hash の指定と等価
|
|
917
931
|
# @param [Integer] options { :indices => Integer } という Hash の指定と等価
|
|
918
932
|
# @param [Hash] options 下記のとおり
|
|
919
|
-
# @option options [When::
|
|
920
|
-
# @option options [Object] その他のキー {When::
|
|
933
|
+
# @option options [When::CalendarNote, String] :calendar_note 暦注を計算する暦注オブジェクトまたはそのIRI
|
|
934
|
+
# @option options [Object] その他のキー {When::CalendarNote#notes} を参照
|
|
921
935
|
#
|
|
922
936
|
# @return [Hash]
|
|
923
937
|
# - :calendar calendar_name の結果 ( name, epoch, reverse, go back )
|