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.
Files changed (168) hide show
  1. data/bin/locales.rb +2 -2
  2. data/bin/when.rb +2 -2
  3. data/lib/when_exe.rb +161 -55
  4. data/lib/when_exe/basictypes.rb +34 -26
  5. data/lib/when_exe/calendarnote.rb +654 -0
  6. data/lib/when_exe/calendartypes.rb +49 -474
  7. data/lib/when_exe/coordinates.rb +141 -34
  8. data/lib/when_exe/core/compatibility.rb +22 -2
  9. data/lib/when_exe/core/extension.rb +47 -3
  10. data/lib/when_exe/ephemeris.rb +82 -109
  11. data/lib/when_exe/googlecalendar.rb +1 -1
  12. data/lib/when_exe/icalendar.rb +26 -14
  13. data/lib/when_exe/inspect.rb +82 -68
  14. data/lib/when_exe/locales/af.rb +1 -1
  15. data/lib/when_exe/locales/ar.rb +1 -1
  16. data/lib/when_exe/locales/az.rb +1 -1
  17. data/lib/when_exe/locales/bg.rb +1 -1
  18. data/lib/when_exe/locales/bn.rb +1 -1
  19. data/lib/when_exe/locales/bs.rb +1 -1
  20. data/lib/when_exe/locales/ca.rb +1 -1
  21. data/lib/when_exe/locales/cs.rb +1 -1
  22. data/lib/when_exe/locales/cy.rb +1 -1
  23. data/lib/when_exe/locales/da.rb +1 -1
  24. data/lib/when_exe/locales/de.rb +1 -1
  25. data/lib/when_exe/locales/de_AT.rb +1 -1
  26. data/lib/when_exe/locales/de_CH.rb +1 -1
  27. data/lib/when_exe/locales/el.rb +1 -1
  28. data/lib/when_exe/locales/en.rb +1 -1
  29. data/lib/when_exe/locales/en_AU.rb +1 -1
  30. data/lib/when_exe/locales/en_CA.rb +1 -1
  31. data/lib/when_exe/locales/en_GB.rb +1 -1
  32. data/lib/when_exe/locales/en_IE.rb +1 -1
  33. data/lib/when_exe/locales/en_IN.rb +1 -1
  34. data/lib/when_exe/locales/en_NZ.rb +1 -1
  35. data/lib/when_exe/locales/en_US.rb +1 -1
  36. data/lib/when_exe/locales/eo.rb +1 -1
  37. data/lib/when_exe/locales/es.rb +1 -1
  38. data/lib/when_exe/locales/es_419.rb +1 -1
  39. data/lib/when_exe/locales/es_AR.rb +1 -1
  40. data/lib/when_exe/locales/es_CL.rb +1 -1
  41. data/lib/when_exe/locales/es_CO.rb +1 -1
  42. data/lib/when_exe/locales/es_CR.rb +1 -1
  43. data/lib/when_exe/locales/es_EC.rb +1 -1
  44. data/lib/when_exe/locales/es_MX.rb +1 -1
  45. data/lib/when_exe/locales/es_PA.rb +1 -1
  46. data/lib/when_exe/locales/es_PE.rb +1 -1
  47. data/lib/when_exe/locales/es_VE.rb +1 -1
  48. data/lib/when_exe/locales/et.rb +1 -1
  49. data/lib/when_exe/locales/eu.rb +1 -1
  50. data/lib/when_exe/locales/fa.rb +1 -1
  51. data/lib/when_exe/locales/fi.rb +1 -1
  52. data/lib/when_exe/locales/fr.rb +1 -1
  53. data/lib/when_exe/locales/fr_CA.rb +1 -1
  54. data/lib/when_exe/locales/fr_CH.rb +1 -1
  55. data/lib/when_exe/locales/gl.rb +1 -1
  56. data/lib/when_exe/locales/he.rb +1 -1
  57. data/lib/when_exe/locales/hi.rb +1 -1
  58. data/lib/when_exe/locales/hi_IN.rb +1 -1
  59. data/lib/when_exe/locales/hr.rb +1 -1
  60. data/lib/when_exe/locales/hu.rb +1 -1
  61. data/lib/when_exe/locales/id.rb +1 -1
  62. data/lib/when_exe/locales/is.rb +1 -1
  63. data/lib/when_exe/locales/it.rb +1 -1
  64. data/lib/when_exe/locales/it_CH.rb +1 -1
  65. data/lib/when_exe/locales/ja.rb +1 -1
  66. data/lib/when_exe/locales/kn.rb +1 -1
  67. data/lib/when_exe/locales/ko.rb +1 -1
  68. data/lib/when_exe/locales/lo.rb +1 -1
  69. data/lib/when_exe/locales/locales.rb +1 -1
  70. data/lib/when_exe/locales/lt.rb +1 -1
  71. data/lib/when_exe/locales/lv.rb +1 -1
  72. data/lib/when_exe/locales/mk.rb +1 -1
  73. data/lib/when_exe/locales/mn.rb +1 -1
  74. data/lib/when_exe/locales/ms.rb +1 -1
  75. data/lib/when_exe/locales/nb.rb +1 -1
  76. data/lib/when_exe/locales/ne.rb +1 -1
  77. data/lib/when_exe/locales/nl.rb +1 -1
  78. data/lib/when_exe/locales/nn.rb +1 -1
  79. data/lib/when_exe/locales/or.rb +1 -1
  80. data/lib/when_exe/locales/pl.rb +1 -1
  81. data/lib/when_exe/locales/pt.rb +1 -1
  82. data/lib/when_exe/locales/pt_BR.rb +1 -1
  83. data/lib/when_exe/locales/rm.rb +1 -1
  84. data/lib/when_exe/locales/ro.rb +1 -1
  85. data/lib/when_exe/locales/ru.rb +1 -1
  86. data/lib/when_exe/locales/sk.rb +1 -1
  87. data/lib/when_exe/locales/sl.rb +1 -1
  88. data/lib/when_exe/locales/sr.rb +1 -1
  89. data/lib/when_exe/locales/sv.rb +1 -1
  90. data/lib/when_exe/locales/sw.rb +1 -1
  91. data/lib/when_exe/locales/th.rb +1 -1
  92. data/lib/when_exe/locales/tl.rb +1 -1
  93. data/lib/when_exe/locales/tr.rb +1 -1
  94. data/lib/when_exe/locales/uk.rb +1 -1
  95. data/lib/when_exe/locales/ur.rb +1 -1
  96. data/lib/when_exe/locales/uz.rb +1 -1
  97. data/lib/when_exe/locales/vi.rb +1 -1
  98. data/lib/when_exe/locales/wo.rb +1 -1
  99. data/lib/when_exe/locales/zh_CN.rb +1 -1
  100. data/lib/when_exe/locales/zh_HK.rb +1 -1
  101. data/lib/when_exe/locales/zh_TW.rb +1 -1
  102. data/lib/when_exe/mini_application.rb +6 -2
  103. data/lib/when_exe/parts/enumerator.rb +13 -8
  104. data/lib/when_exe/parts/geometric_complex.rb +3 -5
  105. data/lib/when_exe/parts/locale.rb +185 -28
  106. data/lib/when_exe/parts/method_cash.rb +20 -10
  107. data/lib/when_exe/parts/resource.rb +154 -76
  108. data/lib/when_exe/parts/timezone.rb +11 -6
  109. data/lib/when_exe/region/bahai.rb +2 -2
  110. data/lib/when_exe/region/balinese.rb +296 -296
  111. data/lib/when_exe/region/chinese.rb +564 -564
  112. data/lib/when_exe/region/chinese_calendar.rb +5 -1
  113. data/lib/when_exe/region/chinese_epoch.rb +47 -102
  114. data/lib/when_exe/region/chinese_twin.rb +798 -0
  115. data/lib/when_exe/region/christian.rb +314 -338
  116. data/lib/when_exe/region/coptic.rb +88 -0
  117. data/lib/when_exe/region/ephemeric_notes.rb +322 -307
  118. data/lib/when_exe/region/french.rb +2 -2
  119. data/lib/when_exe/region/indian.rb +361 -272
  120. data/lib/when_exe/region/iranian.rb +2 -2
  121. data/lib/when_exe/region/islamic.rb +3 -3
  122. data/lib/when_exe/region/japanese.rb +1 -1
  123. data/lib/when_exe/region/japanese_notes.rb +165 -103
  124. data/lib/when_exe/region/japanese_residues.rb +56 -55
  125. data/lib/when_exe/region/japanese_twin.rb +228 -0
  126. data/lib/when_exe/region/javanese.rb +2 -2
  127. data/lib/when_exe/region/jewish.rb +2 -2
  128. data/lib/when_exe/region/korean.rb +4 -4
  129. data/lib/when_exe/region/m17n.rb +19 -19
  130. data/lib/when_exe/region/martian.rb +21 -9
  131. data/lib/when_exe/region/mayan.rb +19 -11
  132. data/lib/when_exe/region/moon.rb +7 -7
  133. data/lib/when_exe/region/nihon_shoki.rb +7 -7
  134. data/lib/when_exe/region/roman.rb +100 -100
  135. data/lib/when_exe/region/shire.rb +130 -147
  136. data/lib/when_exe/region/thai.rb +2 -2
  137. data/lib/when_exe/region/tibetan.rb +2 -2
  138. data/lib/when_exe/region/vietnamese.rb +383 -114
  139. data/lib/when_exe/region/world.rb +112 -129
  140. data/lib/when_exe/timestandard.rb +12 -1
  141. data/lib/when_exe/tmposition.rb +28 -14
  142. data/lib/when_exe/tmreference.rb +96 -93
  143. data/lib/when_exe/version.rb +1 -1
  144. data/test/examples/Terms.m17n +2 -2
  145. data/test/examples/sample.json +16 -0
  146. data/test/examples/sample.xml +1 -1
  147. data/test/test.rb +4 -0
  148. data/test/test/basictypes.rb +2 -2
  149. data/test/test/calendarnote.rb +69 -0
  150. data/test/test/calendartypes.rb +41 -1
  151. data/test/test/coordinates.rb +12 -1
  152. data/test/test/ephemeris.rb +13 -66
  153. data/test/test/icalendar.rb +3 -3
  154. data/test/test/inspect.rb +1 -1
  155. data/test/test/parts.rb +7 -4
  156. data/test/test/region/chinese.rb +45 -0
  157. data/test/test/region/coptic.rb +27 -0
  158. data/test/test/region/indian.rb +1 -1
  159. data/test/test/region/japanese.rb +4 -4
  160. data/test/test/region/jewish.rb +1 -1
  161. data/test/test/region/m17n.rb +7 -5
  162. data/test/test/region/residue.rb +2 -2
  163. data/test/test/region/vietnamese.rb +102 -0
  164. data/test/test/timestandard.rb +81 -0
  165. data/test/test/tmposition.rb +1 -1
  166. data/test/test/tmreference.rb +1 -1
  167. data/when_exe.gemspec +2 -2
  168. metadata +16 -7
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  =begin
3
- Copyright (C) 2012 Takashi SUGA
3
+ Copyright (C) 2012-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
@@ -29,7 +29,7 @@
29
29
  # 他のソフトウェアとの互換性を損なう可能性があるが、本ライブラリは両方の動作の違いを
30
30
  # 記述できる必要があると判断。
31
31
  # * BYDAY/c=n*e±s(,..)
32
- # c で指定したWhen::CalendarTypes::CalendarNoteオブジェクトのイベントeのうち、
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
- (@difference != 0)
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
- @difference = @standard.universal_time - @daylight.universal_time
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, *args = args
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(args)
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 + (Event.default_until || 1000*When::TM::Duration::YEAR)
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
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  =begin
3
- Copyright (C) 2011-2013 Takashi SUGA
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] :simple true ならIRI の先頭部分を簡約表現にする
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 _to_json(options={})
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
- @_pool ? When::Parts::Resource._path_with_prefix(self, options[:simple]) : self
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] :simple true ならIRI の先頭部分を簡約表現にする
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[:simple])
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] + (@format % [label, difference, difference+1])
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
- (@format % [label, difference, difference+1]).to_s
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
- [When::Parts::Resource._path_with_prefix(clock)]
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::CalendarTypes::CalendarNote] wkst 暦注オブジェクト
219
- # @param [Array<When::CalendarTypes::CalendarNote, String>] wkst 暦注オブジェクトとそのイベントメソッド名
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::CalendarTypes::CalendarNote] wkst 暦注オブジェクト
283
- # @param [Array<When::CalendarTypes::CalendarNote, String>] wkst 暦注オブジェクトとそのイベントメソッド名
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::CalendarTypes::CalendarNote] wkst 暦注オブジェクト
357
- # @param [Array<When::CalendarTypes::CalendarNote, String>] wkst 暦注オブジェクトとそのイベントメソッド名
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::CalendarTypes::CalendarNote, String] :calendar_note 暦注を計算する暦注オブジェクトまたはそのIRI
450
- # @option options [Object] その他のキー {When::CalendarTypes::CalendarNote#notes} を参照
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
- _m17n_form(_notes(options), options.kind_of?(Hash) ? options : {})
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::CalendarTypes::CalendarNote, String] :calendar_note 暦注を計算する暦注オブジェクトまたはそのIRI
467
- # @option options [Object] その他のキー {When::CalendarTypes::CalendarNote#notes} を参照
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::CalendarTypes::CalendarNote#notes} を参照
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::CalendarTypes::CalendarNote#notes} を参照
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::CalendarTypes::CalendarNote, String] :calendar_note 暦注を計算する暦注オブジェクトまたはそのIRI
534
- # @option options [Object] その他のキー {When::CalendarTypes::CalendarNote#notes} を参照
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::TM::Clock, When::V::Timezone, When::Parts::Timezone)
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
- # URI要素化 - URI表現の要素として用いる形式に変換
586
- #
587
- # @overload to_uri()
612
+ # caret 付きの frame 名
588
613
  #
589
614
  # @return [String]
590
615
  #
591
- def to_uri(*args)
592
- _to_uri(to_s(*args))
593
- end
594
-
595
- # URI要素化(日付のみ) - 日付の部分をURI表現の要素として用いる形式に変換
616
+ # @note 暦年代付きかまたは frame がグレゴリオ暦の場合は空文字列を返す
596
617
  #
597
- # @overload to_date_uri()
598
- #
599
- # @return [String]
600
- #
601
- def to_date_uri(*args)
602
- _to_uri(to_s(*args).sub(/T([-+][\d:]+|Z|MTC)$/,''))
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 term(designator, locale=nil, d=0, e=3)
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 = (TemporalPosition.format || Format)[c[-1..-1]]
705
+ action = TemporalPosition.format[c[-1..-1]]
692
706
  case action
693
707
  when Array
694
708
  format += action[0]
695
- terms << term(action[1], locale, c[1..-2].to_i, e||3)
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::CalendarTypes::CalendarNote を決定する
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::CalendarTypes::CalendarNote, String] :calendar_note 暦注を計算する暦注オブジェクトまたはそのIRI
920
- # @option options [Object] その他のキー {When::CalendarTypes::CalendarNote#notes} を参照
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 )