when_exe 0.3.4 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
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 )