when_exe 0.2.100 → 0.3.1
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/LICENSE.ja.txt +25 -25
- data/LICENSE.txt +31 -31
- data/bin/irb.rc +5 -0
- data/bin/locales.rb +2 -2
- data/bin/when.rb +16 -0
- data/bin/when.rb.config +7 -0
- data/lib/when_exe.rb +616 -14
- data/lib/when_exe/basictypes.rb +615 -0
- data/lib/when_exe/calendartypes.rb +1700 -0
- data/lib/when_exe/coordinates.rb +1936 -0
- data/lib/when_exe/core/compatibility.rb +54 -0
- data/lib/when_exe/core/duration.rb +72 -72
- data/lib/when_exe/core/extension.rb +382 -0
- data/lib/when_exe/ephemeris.rb +1845 -0
- data/lib/when_exe/googlecalendar.rb +140 -0
- data/lib/when_exe/icalendar.rb +1587 -0
- data/lib/when_exe/inspect.rb +1237 -0
- data/lib/when_exe/locales/af.rb +90 -0
- data/lib/when_exe/locales/ar.rb +145 -0
- data/lib/when_exe/locales/az.rb +90 -0
- data/lib/when_exe/locales/bg.rb +90 -0
- data/lib/when_exe/locales/bn.rb +94 -0
- data/lib/when_exe/locales/bs.rb +121 -0
- data/lib/when_exe/locales/ca.rb +92 -0
- data/lib/when_exe/locales/cs.rb +107 -0
- data/lib/when_exe/locales/cy.rb +150 -0
- data/lib/when_exe/locales/da.rb +84 -0
- data/lib/when_exe/locales/de.rb +92 -0
- data/lib/when_exe/locales/de_AT.rb +92 -0
- data/lib/when_exe/locales/de_CH.rb +92 -0
- data/lib/when_exe/locales/el.rb +93 -0
- data/lib/when_exe/locales/en.rb +88 -0
- data/lib/when_exe/locales/en_AU.rb +88 -0
- data/lib/when_exe/locales/en_CA.rb +88 -0
- data/lib/when_exe/locales/en_GB.rb +88 -0
- data/lib/when_exe/locales/en_IN.rb +88 -0
- data/lib/when_exe/locales/en_NZ.rb +88 -0
- data/lib/when_exe/locales/eo.rb +89 -0
- data/lib/when_exe/locales/es.rb +84 -0
- data/lib/when_exe/locales/es_419.rb +84 -0
- data/lib/when_exe/locales/es_AR.rb +84 -0
- data/lib/when_exe/locales/es_CL.rb +84 -0
- data/lib/when_exe/locales/es_CO.rb +84 -0
- data/lib/when_exe/locales/es_MX.rb +84 -0
- data/lib/when_exe/locales/es_PE.rb +85 -0
- data/lib/when_exe/locales/es_VE.rb +84 -0
- data/lib/when_exe/locales/et.rb +94 -0
- data/lib/when_exe/locales/eu.rb +95 -0
- data/lib/when_exe/locales/fa.rb +80 -0
- data/lib/when_exe/locales/fi.rb +89 -0
- data/lib/when_exe/locales/fr.rb +88 -0
- data/lib/when_exe/locales/fr_CA.rb +88 -0
- data/lib/when_exe/locales/fr_CH.rb +88 -0
- data/lib/when_exe/locales/gl.rb +81 -0
- data/lib/when_exe/locales/he.rb +84 -0
- data/lib/when_exe/locales/hi.rb +80 -0
- data/lib/when_exe/locales/hi_IN.rb +84 -0
- data/lib/when_exe/locales/hr.rb +128 -0
- data/lib/when_exe/locales/hu.rb +84 -0
- data/lib/when_exe/locales/id.rb +89 -0
- data/lib/when_exe/locales/is.rb +89 -0
- data/lib/when_exe/locales/it.rb +87 -0
- data/lib/when_exe/locales/it_CH.rb +87 -0
- data/lib/when_exe/locales/ja.rb +78 -0
- data/lib/when_exe/locales/kn.rb +86 -0
- data/lib/when_exe/locales/ko.rb +78 -0
- data/lib/when_exe/locales/links.rb +2342 -0
- data/lib/when_exe/locales/lo.rb +123 -0
- data/lib/when_exe/locales/locales.rb +91 -0
- data/lib/when_exe/locales/lt.rb +111 -0
- data/lib/when_exe/locales/lv.rb +118 -0
- data/lib/when_exe/locales/mk.rb +93 -0
- data/lib/when_exe/locales/mn.rb +80 -0
- data/lib/when_exe/locales/nb.rb +81 -0
- data/lib/when_exe/locales/ne.rb +81 -0
- data/lib/when_exe/locales/nl.rb +92 -0
- data/lib/when_exe/locales/nn.rb +73 -0
- data/lib/when_exe/locales/or.rb +84 -0
- data/lib/when_exe/locales/pl.rb +128 -0
- data/lib/when_exe/locales/pt.rb +88 -0
- data/lib/when_exe/locales/pt_BR.rb +88 -0
- data/lib/when_exe/locales/rm.rb +143 -0
- data/lib/when_exe/locales/ro.rb +105 -0
- data/lib/when_exe/locales/ru.rb +128 -0
- data/lib/when_exe/locales/sk.rb +109 -0
- data/lib/when_exe/locales/sl.rb +122 -0
- data/lib/when_exe/locales/sr.rb +122 -0
- data/lib/when_exe/locales/sv.rb +83 -0
- data/lib/when_exe/locales/sw.rb +89 -0
- data/lib/when_exe/locales/th.rb +78 -0
- data/lib/when_exe/locales/tl.rb +99 -0
- data/lib/when_exe/locales/tr.rb +96 -0
- data/lib/when_exe/locales/uk.rb +128 -0
- data/lib/when_exe/locales/uz.rb +128 -0
- data/lib/when_exe/locales/vi.rb +94 -0
- data/lib/when_exe/locales/wo.rb +82 -0
- data/lib/when_exe/locales/zh_CN.rb +77 -0
- data/lib/when_exe/locales/zh_HK.rb +77 -0
- data/lib/when_exe/locales/zh_TW.rb +77 -0
- data/lib/when_exe/mini_application.rb +252 -0
- data/lib/when_exe/parts/enumerator.rb +472 -0
- data/lib/when_exe/parts/geometric_complex.rb +379 -0
- data/lib/when_exe/parts/locale.rb +513 -0
- data/lib/when_exe/parts/method_cash.rb +207 -0
- data/lib/when_exe/parts/resource.rb +806 -0
- data/lib/when_exe/parts/timezone.rb +182 -0
- data/lib/when_exe/region/bahai.rb +145 -0
- data/lib/when_exe/region/balinese.rb +627 -0
- data/lib/when_exe/region/chinese.rb +896 -0
- data/lib/when_exe/region/chinese_calendar.rb +919 -0
- data/lib/when_exe/region/chinese_epoch.rb +1245 -0
- data/lib/when_exe/region/christian.rb +644 -0
- data/lib/when_exe/region/far_east.rb +192 -0
- data/lib/when_exe/region/french.rb +66 -0
- data/lib/when_exe/region/geologicalage.rb +639 -0
- data/lib/when_exe/region/indian.rb +1066 -0
- data/lib/when_exe/region/iranian.rb +66 -0
- data/lib/when_exe/region/islamic.rb +105 -0
- data/lib/when_exe/region/japanese.rb +851 -0
- data/lib/when_exe/region/japanese_notes.rb +964 -0
- data/lib/when_exe/region/japanese_residues.rb +1149 -0
- data/lib/when_exe/region/javanese.rb +228 -0
- data/lib/when_exe/region/jewish.rb +127 -0
- data/lib/when_exe/region/korean.rb +267 -0
- data/lib/when_exe/region/m17n.rb +115 -0
- data/lib/when_exe/region/martian.rb +215 -0
- data/lib/when_exe/region/mayan.rb +122 -0
- data/lib/when_exe/region/moon.rb +333 -0
- data/lib/when_exe/region/nihon_shoki.rb +73 -0
- data/lib/when_exe/region/planets.rb +585 -0
- data/lib/when_exe/region/pope.rb +298 -0
- data/lib/when_exe/region/residue.rb +229 -0
- data/lib/when_exe/region/roman.rb +325 -0
- data/lib/when_exe/region/ryukyu.rb +98 -0
- data/lib/when_exe/region/shire.rb +254 -0
- data/lib/when_exe/region/sun.rb +210 -0
- data/lib/when_exe/region/thai.rb +227 -0
- data/lib/when_exe/region/tibetan.rb +233 -0
- data/lib/when_exe/region/v50.rb +111 -0
- data/lib/when_exe/region/vietnamese.rb +173 -0
- data/lib/when_exe/region/world.rb +197 -0
- data/lib/when_exe/timestandard.rb +547 -0
- data/lib/when_exe/tmduration.rb +330 -330
- data/lib/when_exe/tmobjects.rb +1295 -0
- data/lib/when_exe/tmposition.rb +1955 -0
- data/lib/when_exe/tmreference.rb +1547 -0
- data/lib/when_exe/version.rb +10 -3
- data/link_to_online_documents +4 -0
- data/test/examples/JapanHolidays.ics +456 -0
- data/test/examples/Millennium.ics +17 -0
- data/test/examples/NewYork.ics +61 -0
- data/test/examples/Residue.m17n +135 -0
- data/test/examples/Spatial.m17n +179 -0
- data/test/examples/Terms.m17n +39 -0
- data/test/examples/Test.ics +53 -0
- data/test/examples/USA-DST.ics +61 -0
- data/test/examples/geometric_complex.rb +41 -0
- data/test/examples/sample.xml +14 -0
- data/test/examples/today.rb +61 -0
- data/test/test.rb +54 -19
- data/test/test.rb.config +1 -0
- data/test/test/basictypes.rb +368 -0
- data/test/test/calendartypes.rb +57 -0
- data/test/test/coordinates.rb +380 -0
- data/test/test/ephemeris.rb +127 -0
- data/test/test/googlecalendar.rb +167 -0
- data/test/test/icalendar.rb +848 -0
- data/test/test/inspect.rb +115 -0
- data/test/test/parts.rb +480 -0
- data/test/test/region/chinese.rb +161 -0
- data/test/test/region/french.rb +33 -0
- data/test/test/region/geologicalage.rb +14 -0
- data/test/test/region/indian.rb +55 -0
- data/test/test/region/iran.rb +54 -0
- data/test/test/region/islamic.rb +18 -0
- data/test/test/region/japanese.rb +62 -0
- data/test/test/region/jewish.rb +61 -0
- data/test/test/region/m17n.rb +181 -0
- data/test/test/region/mayan.rb +78 -0
- data/test/test/region/moon.rb +14 -0
- data/test/test/region/planets.rb +14 -0
- data/test/test/region/residue.rb +123 -0
- data/test/test/region/sun.rb +14 -0
- data/test/test/region/thai.rb +94 -0
- data/test/test/region/tibetan.rb +30 -0
- data/test/test/tmobjects.rb +356 -57
- data/test/test/tmposition.rb +237 -0
- data/test/test/tmreference.rb +95 -0
- data/when_exe.gemspec +2 -2
- metadata +187 -7
- data/doc/COPYING +0 -31
- data/doc/COPYING.ja +0 -25
- data/doc/document_url +0 -1
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
=begin
|
|
3
|
+
Copyright (C) 2013 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
|
+
#
|
|
9
|
+
# Ruby .8.x 系のためのための互換性確保用コード
|
|
10
|
+
#
|
|
11
|
+
|
|
12
|
+
class String
|
|
13
|
+
unless "1".respond_to?(:encode)
|
|
14
|
+
require('iconv')
|
|
15
|
+
# encode
|
|
16
|
+
#
|
|
17
|
+
# @param [String] code 文字コード
|
|
18
|
+
#
|
|
19
|
+
# @return [String] 文字コードcode に変換した文字列
|
|
20
|
+
#
|
|
21
|
+
def encode(code)
|
|
22
|
+
return Iconv.iconv(code, 'UTF-8', self)[0]
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
unless "1".respond_to?(:to_r)
|
|
27
|
+
# to_r(もどき)
|
|
28
|
+
#
|
|
29
|
+
# 文字列を numeric に変換する
|
|
30
|
+
# (できるだけ情報が落ちない型を選択)
|
|
31
|
+
#
|
|
32
|
+
# @return [Numeric]
|
|
33
|
+
def to_r
|
|
34
|
+
case self
|
|
35
|
+
when /\.|E/i
|
|
36
|
+
to_f
|
|
37
|
+
when /\//
|
|
38
|
+
Rational
|
|
39
|
+
Rational(*split(/\//).map {|v| v.to_i})
|
|
40
|
+
else
|
|
41
|
+
to_i
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
#
|
|
48
|
+
# 例外クラス
|
|
49
|
+
#
|
|
50
|
+
unless Object.const_defined?(:StopIteration)
|
|
51
|
+
# @private
|
|
52
|
+
class StopIteration < IndexError
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
=begin
|
|
3
|
-
Copyright (C) 2013 Takashi SUGA
|
|
4
|
-
|
|
5
|
-
You may use and/or modify this file according to the license described in the
|
|
6
|
-
=end
|
|
7
|
-
|
|
8
|
-
#
|
|
9
|
-
# When::TM::Duration のための標準クラスの拡張
|
|
10
|
-
#
|
|
11
|
-
|
|
12
|
-
#
|
|
13
|
-
# Extensions to Time class
|
|
14
|
-
#
|
|
15
|
-
# @private
|
|
16
|
-
class Time
|
|
17
|
-
|
|
18
|
-
alias :_plus_ :+
|
|
19
|
-
def +(other)
|
|
20
|
-
other.kind_of?(When::TM::Duration) ? self + other.to_f : self._plus_(other)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
alias :_minus_ :-
|
|
25
|
-
def -(other)
|
|
26
|
-
other.kind_of?(When::TM::Duration) ? self - other.to_f : self._minus_(other)
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
#
|
|
31
|
-
# Extensions to Numeric class
|
|
32
|
-
#
|
|
33
|
-
class Numeric
|
|
34
|
-
|
|
35
|
-
#
|
|
36
|
-
# メソッド名に相当する単位で表した When::TM::Duration
|
|
37
|
-
# @method unit_duration
|
|
38
|
-
# @return [When::TM::Duration]
|
|
39
|
-
# @note unit は second, minute, hour, day, week または
|
|
40
|
-
# seconds, minutes, hours, days, weeks に読み替える
|
|
41
|
-
# @note core/duration
|
|
42
|
-
|
|
43
|
-
# @private
|
|
44
|
-
When::TM::Duration::Unit.keys.each do |key|
|
|
45
|
-
|
|
46
|
-
module_eval %Q{
|
|
47
|
-
# for When::TM::Duration
|
|
48
|
-
def #{key}_duration
|
|
49
|
-
When::TM::Duration.new(self * When::TM::Duration::Unit['#{key}'])
|
|
50
|
-
end
|
|
51
|
-
alias :#{key}s_duration :#{key}_duration
|
|
52
|
-
}
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
#
|
|
57
|
-
# Extensions to Array class
|
|
58
|
-
#
|
|
59
|
-
class Array
|
|
60
|
-
|
|
61
|
-
#
|
|
62
|
-
# self を Array<日, 時, 分, 秒> とみなして When::TM::Duration を生成
|
|
63
|
-
#
|
|
64
|
-
# @return [When::TM::Duration]
|
|
65
|
-
#
|
|
66
|
-
# @note core/duration
|
|
67
|
-
#
|
|
68
|
-
def duration
|
|
69
|
-
When::TM::Duration.dhms(*self)
|
|
70
|
-
end
|
|
71
|
-
alias :to_duration :duration
|
|
72
|
-
end
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
=begin
|
|
3
|
+
Copyright (C) 2013 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
|
+
#
|
|
9
|
+
# When::TM::Duration のための標準クラスの拡張
|
|
10
|
+
#
|
|
11
|
+
|
|
12
|
+
#
|
|
13
|
+
# Extensions to Time class
|
|
14
|
+
#
|
|
15
|
+
# @private
|
|
16
|
+
class Time
|
|
17
|
+
|
|
18
|
+
alias :_plus_ :+
|
|
19
|
+
def +(other)
|
|
20
|
+
other.kind_of?(When::TM::Duration) ? self + other.to_f : self._plus_(other)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
alias :_minus_ :-
|
|
25
|
+
def -(other)
|
|
26
|
+
other.kind_of?(When::TM::Duration) ? self - other.to_f : self._minus_(other)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
#
|
|
31
|
+
# Extensions to Numeric class
|
|
32
|
+
#
|
|
33
|
+
class Numeric
|
|
34
|
+
|
|
35
|
+
#
|
|
36
|
+
# メソッド名に相当する単位で表した When::TM::Duration
|
|
37
|
+
# @method unit_duration
|
|
38
|
+
# @return [When::TM::Duration]
|
|
39
|
+
# @note unit は second, minute, hour, day, week または
|
|
40
|
+
# seconds, minutes, hours, days, weeks に読み替える
|
|
41
|
+
# @note core/duration
|
|
42
|
+
|
|
43
|
+
# @private
|
|
44
|
+
When::TM::Duration::Unit.keys.each do |key|
|
|
45
|
+
|
|
46
|
+
module_eval %Q{
|
|
47
|
+
# for When::TM::Duration
|
|
48
|
+
def #{key}_duration
|
|
49
|
+
When::TM::Duration.new(self * When::TM::Duration::Unit['#{key}'])
|
|
50
|
+
end
|
|
51
|
+
alias :#{key}s_duration :#{key}_duration
|
|
52
|
+
}
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
#
|
|
57
|
+
# Extensions to Array class
|
|
58
|
+
#
|
|
59
|
+
class Array
|
|
60
|
+
|
|
61
|
+
#
|
|
62
|
+
# self を Array<日, 時, 分, 秒> とみなして When::TM::Duration を生成
|
|
63
|
+
#
|
|
64
|
+
# @return [When::TM::Duration]
|
|
65
|
+
#
|
|
66
|
+
# @note core/duration
|
|
67
|
+
#
|
|
68
|
+
def duration
|
|
69
|
+
When::TM::Duration.dhms(*self)
|
|
70
|
+
end
|
|
71
|
+
alias :to_duration :duration
|
|
72
|
+
end
|
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
=begin
|
|
3
|
+
Copyright (C) 2013 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/core/duration'
|
|
9
|
+
|
|
10
|
+
#
|
|
11
|
+
# 標準クラスの拡張
|
|
12
|
+
#
|
|
13
|
+
|
|
14
|
+
#
|
|
15
|
+
# Extensions to Time class
|
|
16
|
+
#
|
|
17
|
+
class Time
|
|
18
|
+
#
|
|
19
|
+
# 対応する When::TM::JulianDate を生成
|
|
20
|
+
#
|
|
21
|
+
# @param [Hash] options
|
|
22
|
+
# @option options [When::TM::Clock] :clock
|
|
23
|
+
# @option options [When::Parts::Timezone] :tz
|
|
24
|
+
#
|
|
25
|
+
# @return [When::TM::JulianDate]
|
|
26
|
+
#
|
|
27
|
+
# @note core/extension
|
|
28
|
+
#
|
|
29
|
+
def julian_date(options={})
|
|
30
|
+
When::TM::JulianDate.universal_time(self.to_f * When::TM::IntervalLength::SECOND, options)
|
|
31
|
+
end
|
|
32
|
+
alias :to_julian_date :julian_date
|
|
33
|
+
|
|
34
|
+
#
|
|
35
|
+
# 対応する When::TM::DateAndTime を生成
|
|
36
|
+
#
|
|
37
|
+
# @param [Hash] options 暦法や時法などの指定
|
|
38
|
+
#
|
|
39
|
+
# @see When::TM::TemporalPosition._instance
|
|
40
|
+
#
|
|
41
|
+
# @return [When::TM::DateAndTime]
|
|
42
|
+
#
|
|
43
|
+
# @note core/extension
|
|
44
|
+
#
|
|
45
|
+
def tm_position(options={})
|
|
46
|
+
When.at(self, options)
|
|
47
|
+
end
|
|
48
|
+
alias :to_tm_position :tm_position
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
#
|
|
52
|
+
# Extensions to Date class
|
|
53
|
+
#
|
|
54
|
+
class Date
|
|
55
|
+
|
|
56
|
+
include When::TM::TemporalPosition::Conversion if When::TM.const_defined?(:TemporalPosition)
|
|
57
|
+
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
#
|
|
61
|
+
# Extensions to Numeric class
|
|
62
|
+
#
|
|
63
|
+
class Numeric
|
|
64
|
+
|
|
65
|
+
include When::TM::TemporalPosition::Conversion if When::TM.const_defined?(:TemporalPosition)
|
|
66
|
+
|
|
67
|
+
#
|
|
68
|
+
# 曜日(剰余類)
|
|
69
|
+
#
|
|
70
|
+
# @return [When::Coordinates::Residue] 月曜を 0 とする七曜(剰余類)
|
|
71
|
+
#
|
|
72
|
+
# @note core/extension
|
|
73
|
+
#
|
|
74
|
+
def to_day_of_week
|
|
75
|
+
When::Coordinates::Residue.day_of_week(self)
|
|
76
|
+
end
|
|
77
|
+
alias :day_of_week :to_day_of_week
|
|
78
|
+
|
|
79
|
+
#
|
|
80
|
+
# 月名
|
|
81
|
+
#
|
|
82
|
+
# self が 月番号の月名を返します
|
|
83
|
+
#
|
|
84
|
+
# @return [When::BasicTypes::M17n] 月名
|
|
85
|
+
#
|
|
86
|
+
# @note core/extension
|
|
87
|
+
#
|
|
88
|
+
def to_month_name
|
|
89
|
+
When::BasicTypes::M17n.month_name(self)
|
|
90
|
+
end
|
|
91
|
+
alias :month_name :to_month_name
|
|
92
|
+
|
|
93
|
+
# メソッド名に相当する単位で表した When::TM::IntervalLength
|
|
94
|
+
# @method unit_interval_length
|
|
95
|
+
# @return [When::TM::IntervalLength]
|
|
96
|
+
#
|
|
97
|
+
# @note unit は second, minute, hour, day, week または
|
|
98
|
+
# seconds, minutes, hours, days, weeks に読み替える
|
|
99
|
+
#
|
|
100
|
+
# @note core/extension
|
|
101
|
+
|
|
102
|
+
# メソッド名に相当する単位で表した When::TM::PeriodDuration
|
|
103
|
+
# @method unit_period_duration
|
|
104
|
+
# @return [When::TM::PeriodDuration]
|
|
105
|
+
#
|
|
106
|
+
# @note unit は second, minute, hour, day, week, month, year または
|
|
107
|
+
# seconds, minutes, hours, days, weeks, months, years に読み替える
|
|
108
|
+
#
|
|
109
|
+
# @note core/extension
|
|
110
|
+
|
|
111
|
+
# @private
|
|
112
|
+
When::TM::Duration::Unit.keys.each do |key|
|
|
113
|
+
|
|
114
|
+
module_eval %Q{
|
|
115
|
+
# for When::TM::IntervalLength
|
|
116
|
+
def #{key}_interval_length
|
|
117
|
+
When::TM::IntervalLength.new(self, '#{key}')
|
|
118
|
+
end
|
|
119
|
+
alias :#{key}s_interval_length :#{key}_interval_length
|
|
120
|
+
|
|
121
|
+
# for When::TM::PeriodDuration
|
|
122
|
+
def #{key}_period_duration
|
|
123
|
+
When::TM::PeriodDuration.new(self, When::#{key.upcase})
|
|
124
|
+
end
|
|
125
|
+
alias :#{key}s_period_duration :#{key}_period_duration
|
|
126
|
+
}
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
#
|
|
131
|
+
# Extensions to String class
|
|
132
|
+
#
|
|
133
|
+
class String
|
|
134
|
+
|
|
135
|
+
#
|
|
136
|
+
# self を When::BasicTypes::M17n に変換する
|
|
137
|
+
#
|
|
138
|
+
# @return [When::BasicTypes::M17n]
|
|
139
|
+
#
|
|
140
|
+
# @note core/extension
|
|
141
|
+
#
|
|
142
|
+
def to_m17n
|
|
143
|
+
When::BasicTypes::M17n.new(self)
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# 特定 locale に対応した文字列の取得
|
|
147
|
+
#
|
|
148
|
+
# @param [String] loc locale の指定
|
|
149
|
+
#
|
|
150
|
+
# @return [String] loc に対応した文字列
|
|
151
|
+
#
|
|
152
|
+
# @note core/extension
|
|
153
|
+
#
|
|
154
|
+
def translate(loc='')
|
|
155
|
+
return encode($1) if loc =~ /\.(.+)$/
|
|
156
|
+
return self
|
|
157
|
+
end
|
|
158
|
+
alias :/ :translate
|
|
159
|
+
|
|
160
|
+
# 包摂リストに登録されている文字を包摂する
|
|
161
|
+
#
|
|
162
|
+
# @param [Hash] pattern 包摂ルール
|
|
163
|
+
#
|
|
164
|
+
# @return [String] 包摂結果
|
|
165
|
+
#
|
|
166
|
+
def ideographic_unification(pattern=When::Parts::Locale::DefaultUnification)
|
|
167
|
+
When::Parts::Locale.ideographic_unification(self, pattern)
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
#
|
|
171
|
+
# self を IRI とみなして When::Parts::Resource を取得
|
|
172
|
+
#
|
|
173
|
+
# @param [String] namespace デフォルトの namespace
|
|
174
|
+
#
|
|
175
|
+
# @return [When::Parts::Resource]
|
|
176
|
+
#
|
|
177
|
+
# @note core/extension
|
|
178
|
+
#
|
|
179
|
+
def resource(namespace=nil)
|
|
180
|
+
When::Parts::Resource._instance(self, namespace)
|
|
181
|
+
end
|
|
182
|
+
alias :to_resource :resource
|
|
183
|
+
|
|
184
|
+
#
|
|
185
|
+
# self をプレフィクス '_c:' を省略した IRI とみなして When::TM::Calendar を取得
|
|
186
|
+
#
|
|
187
|
+
# @return [When::TM::Calendar]
|
|
188
|
+
#
|
|
189
|
+
# @note core/extension
|
|
190
|
+
#
|
|
191
|
+
def calendar
|
|
192
|
+
When::Parts::Resource._instance(self, '_c:')
|
|
193
|
+
end
|
|
194
|
+
alias :to_calendar :calendar
|
|
195
|
+
|
|
196
|
+
#
|
|
197
|
+
# self をプレフィクス '_c:' を省略した IRI とみなして When::TM::CalendarNote を取得
|
|
198
|
+
#
|
|
199
|
+
# @return [When::TM::CalendarNote]
|
|
200
|
+
#
|
|
201
|
+
# @note core/extension
|
|
202
|
+
#
|
|
203
|
+
def calendar_note
|
|
204
|
+
When::Parts::Resource._instance(self, '_n:')
|
|
205
|
+
end
|
|
206
|
+
alias :to_calendar_note :calendar_note
|
|
207
|
+
|
|
208
|
+
#
|
|
209
|
+
# self をプレフィクス '_e:' を省略した IRI とみなして When::TM::CalendarEra を取得
|
|
210
|
+
#
|
|
211
|
+
# @return [When::TM::CalendarEra]
|
|
212
|
+
#
|
|
213
|
+
# @note core/extension
|
|
214
|
+
#
|
|
215
|
+
def calendar_era
|
|
216
|
+
When::Parts::Resource._instance(self, '_e:')
|
|
217
|
+
end
|
|
218
|
+
alias :to_calendar_era :calendar_era
|
|
219
|
+
|
|
220
|
+
#
|
|
221
|
+
# self をプレフィクス '_m:' を省略した IRI とみなして When::BasicTypes::M17n を取得
|
|
222
|
+
#
|
|
223
|
+
# @return [When::BasicTypes::M17n]
|
|
224
|
+
#
|
|
225
|
+
# @note core/extension
|
|
226
|
+
#
|
|
227
|
+
def m17n
|
|
228
|
+
When::Parts::Resource._instance(self, '_m:')
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
# self を幹と枝の要素と解釈してWhen::Coordinates::Pair を生成
|
|
232
|
+
#
|
|
233
|
+
# @see When::Coordinates::Pair._force_pair
|
|
234
|
+
#
|
|
235
|
+
# @return [When::Coordinates::Pair]
|
|
236
|
+
#
|
|
237
|
+
def pair
|
|
238
|
+
Coordinates::Pair._force_pair(self)
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
#
|
|
242
|
+
# self を検索する暦年代とみなして登録された When::TM::CalendarEraを検索
|
|
243
|
+
#
|
|
244
|
+
# @overload calendar_era(options={}
|
|
245
|
+
# @param [Hash] options
|
|
246
|
+
# see alse {When.era}
|
|
247
|
+
#
|
|
248
|
+
# @return [Array<When::TM::CalendarEra>]
|
|
249
|
+
#
|
|
250
|
+
# 検索結果を When::TM::CalendarEra オブジェクトの Array で返す。
|
|
251
|
+
# ヒット数が不足している場合は、_setup_ で指定した順序で When::TM::CalendarEra オブジェクトを
|
|
252
|
+
# 生成しつつ読み込んで検索する。
|
|
253
|
+
#
|
|
254
|
+
# @note core/extension
|
|
255
|
+
#
|
|
256
|
+
def era(*args)
|
|
257
|
+
When::TM::CalendarEra._instance(*([self] + args))
|
|
258
|
+
end
|
|
259
|
+
alias :to_era :era
|
|
260
|
+
|
|
261
|
+
#
|
|
262
|
+
# self をWhen.exe Standard Expression とみなして When::TM::TemporalPosition を生成
|
|
263
|
+
#
|
|
264
|
+
# @param [Hash] options 暦法や時法などの指定
|
|
265
|
+
#
|
|
266
|
+
# @see When::TM::TemporalPosition._instance
|
|
267
|
+
#
|
|
268
|
+
# @return [When::TM::TemporalPosition]
|
|
269
|
+
#
|
|
270
|
+
# @note core/extension
|
|
271
|
+
#
|
|
272
|
+
def when?(options={})
|
|
273
|
+
When.when?(self, options)
|
|
274
|
+
end
|
|
275
|
+
alias :tm_position :when?
|
|
276
|
+
alias :to_tm_position :when?
|
|
277
|
+
|
|
278
|
+
#
|
|
279
|
+
# 曜日(剰余類)
|
|
280
|
+
#
|
|
281
|
+
# self の最初の3文字から決定した七曜(剰余類)を返します。
|
|
282
|
+
# 一致する七曜(剰余類)がない場合、名前の一致するその他の剰余類を探して返します。
|
|
283
|
+
#
|
|
284
|
+
# @return [When::Coordinates::Residue]
|
|
285
|
+
# [ 月曜を 0 とする七曜(剰余類) ]
|
|
286
|
+
# [ 名前の一致するその他の剰余類 ]
|
|
287
|
+
#
|
|
288
|
+
# @note core/extension
|
|
289
|
+
#
|
|
290
|
+
def to_residue
|
|
291
|
+
When::Coordinates::Residue.to_residue(self)
|
|
292
|
+
end
|
|
293
|
+
alias :residue :to_residue
|
|
294
|
+
|
|
295
|
+
#
|
|
296
|
+
# 月名
|
|
297
|
+
#
|
|
298
|
+
# self の最初の3文字から決定した月名を返します。
|
|
299
|
+
# 一致する月名がない場合、名前の一致するその他のM17nを探して返します。
|
|
300
|
+
# (self が M17n なら name 自身をそのまま返します)
|
|
301
|
+
#
|
|
302
|
+
# @return [When::BasicTypes::M17n] 月名
|
|
303
|
+
#
|
|
304
|
+
# @note core/extension
|
|
305
|
+
#
|
|
306
|
+
def to_month_name
|
|
307
|
+
When::BasicTypes::M17n.month_name(self)
|
|
308
|
+
end
|
|
309
|
+
alias :month_name :to_month_name
|
|
310
|
+
|
|
311
|
+
#
|
|
312
|
+
# self をWhen.exe Standard Expression とみなして When::TM::TemporalPosition を生成し“^”演算を実行
|
|
313
|
+
#
|
|
314
|
+
# @return [When::TM::TemporalPosition の “^”演算結果]
|
|
315
|
+
#
|
|
316
|
+
# @note core/extension
|
|
317
|
+
#
|
|
318
|
+
def ^(other)
|
|
319
|
+
When::TM::TemporalPosition._instance(self, {}) ^ other
|
|
320
|
+
end
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
#
|
|
324
|
+
# Extensions to Regexp class
|
|
325
|
+
#
|
|
326
|
+
class Regexp
|
|
327
|
+
#
|
|
328
|
+
# self を検索する暦年代にマッチする正規表現とみなして登録された When::TM::CalendarEraを検索
|
|
329
|
+
#
|
|
330
|
+
# @overload calendar_era(options={}
|
|
331
|
+
# @param [Hash] options
|
|
332
|
+
# see also {When.era}
|
|
333
|
+
#
|
|
334
|
+
# @return [Array<When::TM::CalendarEra>]
|
|
335
|
+
#
|
|
336
|
+
# 検索結果を When::TM::CalendarEra オブジェクトの Array で返す。
|
|
337
|
+
# ヒット数が不足している場合は、_setup_ で指定した順序で When::TM::CalendarEra オブジェクトを
|
|
338
|
+
# 生成しつつ読み込んで検索する。
|
|
339
|
+
#
|
|
340
|
+
# @note core/extension
|
|
341
|
+
#
|
|
342
|
+
def era(*args)
|
|
343
|
+
When::TM::CalendarEra._instance(*([self] + args))
|
|
344
|
+
end
|
|
345
|
+
alias :to_era :era
|
|
346
|
+
|
|
347
|
+
# 包摂リストに登録されている文字を包摂する
|
|
348
|
+
#
|
|
349
|
+
# @param [Hash] pattern 包摂ルール
|
|
350
|
+
#
|
|
351
|
+
# @return [Regexp] 包摂結果
|
|
352
|
+
#
|
|
353
|
+
def ideographic_unification(pattern=When::Parts::Locale::DefaultUnification)
|
|
354
|
+
When::Parts::Locale.ideographic_unification(self, pattern)
|
|
355
|
+
end
|
|
356
|
+
end
|
|
357
|
+
|
|
358
|
+
#
|
|
359
|
+
# Extensions to Array class
|
|
360
|
+
#
|
|
361
|
+
class Array
|
|
362
|
+
#
|
|
363
|
+
# self を暦要素の Array とみなして [When::TM::TemporalPosition] を生成
|
|
364
|
+
#
|
|
365
|
+
# @param [Hash] options 暦法や時法などの指定
|
|
366
|
+
# @option options [Symbol] :invalid
|
|
367
|
+
# [:raise 日時が存在しない場合例外発生 ]
|
|
368
|
+
# [:check 日時が存在しない場合 nil を返す ]
|
|
369
|
+
# [その他/nil 日時が存在することを確認しない(デフォルト)]
|
|
370
|
+
# see also {When::TM::TemporalPosition._instance}
|
|
371
|
+
#
|
|
372
|
+
# @return [When::TM::TemporalPosition]
|
|
373
|
+
# @raise [ArgumentError]
|
|
374
|
+
# options[ :invalid ] が :raise で、日時が存在しない場合
|
|
375
|
+
#
|
|
376
|
+
# @note core/extension
|
|
377
|
+
#
|
|
378
|
+
def tm_position(options={})
|
|
379
|
+
When.TemporalPosition(*(self.dup << options))
|
|
380
|
+
end
|
|
381
|
+
alias :to_tm_position :tm_position
|
|
382
|
+
end
|