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