when_exe 0.4.6 → 0.5.0
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.
- checksums.yaml +5 -5
- data/LICENSE.ja.txt +8 -21
- data/LICENSE.txt +5 -27
- data/README.md +8 -63
- data/bin/make_ttl.rb +3 -2
- data/bin/make_ttl.rb.config +3 -3
- data/lib/when_exe.rb +8 -3
- data/lib/when_exe/basictypes.rb +1 -2
- data/lib/when_exe/calendarnote.rb +9 -5
- data/lib/when_exe/calendartypes.rb +4 -4
- data/lib/when_exe/coordinates.rb +14 -18
- data/lib/when_exe/ephemeris.rb +5 -6
- data/lib/when_exe/events.rb +7 -7
- data/lib/when_exe/google_api.rb +26 -31
- data/lib/when_exe/icalendar.rb +8 -8
- data/lib/when_exe/inspect.rb +3 -3
- data/lib/when_exe/linkeddata.rb +10 -2
- data/lib/when_exe/locales/locale.rb +2 -2
- data/lib/when_exe/parts/enumerator.rb +3 -3
- data/lib/when_exe/parts/geometric_complex.rb +2 -2
- data/lib/when_exe/parts/resource.rb +2 -2
- data/lib/when_exe/parts/timezone.rb +17 -29
- data/lib/when_exe/region/balinese.rb +5 -3
- data/lib/when_exe/region/chinese.rb +25 -3
- data/lib/when_exe/region/chinese/twins.rb +128 -5
- data/lib/when_exe/region/dee.rb +4 -4
- data/lib/when_exe/region/geologicalage.rb +137 -126
- data/lib/when_exe/region/hanke_henry.rb +4 -4
- data/lib/when_exe/region/indian.rb +73 -4
- data/lib/when_exe/region/international_fixed.rb +3 -3
- data/lib/when_exe/region/japanese.rb +9 -5
- data/lib/when_exe/region/japanese/epochs.rb +8 -4
- data/lib/when_exe/region/japanese/notes.rb +25 -7
- data/lib/when_exe/region/japanese/residues.rb +32 -10
- data/lib/when_exe/region/japanese/weeks.rb +7 -7
- data/lib/when_exe/region/korean.rb +17 -17
- data/lib/when_exe/region/saudi_arabian.rb +57 -0
- data/lib/when_exe/region/world.rb +3 -3
- data/lib/when_exe/timestandard.rb +7 -5
- data/lib/when_exe/tmobjects.rb +2 -2
- data/lib/when_exe/tmposition.rb +6 -4
- data/lib/when_exe/tmreference.rb +3 -3
- data/lib/when_exe/version.rb +3 -3
- data/test/events/example-datasets +0 -1
- data/test/events/japanese-holiday.csv +23 -6
- data/test/events/japanese-holiday.ttl +321 -151
- data/test/test/basictypes.rb +2 -2
- data/test/test/calendarnote.rb +2 -2
- data/test/test/coordinates.rb +6 -4
- data/test/test/ephemeris.rb +2 -2
- data/test/test/google_api.rb +45 -32
- data/test/test/inspect.rb +2 -2
- data/test/test/parts.rb +5 -5
- data/test/test/region/christian.rb +7 -7
- data/test/test/region/indian.rb +14 -1
- data/test/test/region/islamic.rb +11 -1
- data/test/test/region/japanese.rb +3 -3
- data/test/test/region/m17n.rb +2 -2
- data/test/test/region/reforms.rb +2 -2
- data/test/test/tmposition.rb +7 -7
- metadata +7 -8
data/lib/when_exe/events.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
=begin
|
3
|
-
Copyright (C) 2015-
|
3
|
+
Copyright (C) 2015-2021 Takashi SUGA
|
4
4
|
|
5
5
|
You may use and/or modify this file according to the license
|
6
6
|
described in the LICENSE.txt file included in this archive.
|
@@ -1160,9 +1160,9 @@ module When
|
|
1160
1160
|
edge_included(first, range.send(method), :to_f))
|
1161
1161
|
end
|
1162
1162
|
end
|
1163
|
-
|
1164
|
-
|
1165
|
-
|
1163
|
+
elsif @index.key?(SPATIAL)
|
1164
|
+
list << @index[SPATIAL][options['location']]
|
1165
|
+
end
|
1166
1166
|
end
|
1167
1167
|
|
1168
1168
|
# グラフ
|
@@ -1440,7 +1440,7 @@ module When
|
|
1440
1440
|
when /(out|no)\s*header\s*(\((\d+)\))?/i
|
1441
1441
|
@limit = $3.to_i if $3
|
1442
1442
|
csv_row_vs_label([])
|
1443
|
-
open
|
1443
|
+
::URI.send(:open, source,'r') do |io|
|
1444
1444
|
CSV.parse(io.read) do |row|
|
1445
1445
|
yield(row)
|
1446
1446
|
break if @limit && @events.size >= @limit
|
@@ -1448,7 +1448,7 @@ module When
|
|
1448
1448
|
end
|
1449
1449
|
when /header\s*(\((\d+)\))?/i
|
1450
1450
|
@limit = $2.to_i if $2
|
1451
|
-
open
|
1451
|
+
::URI.send(:open, source,'r') do |io|
|
1452
1452
|
CSV.parse(io.read) do |row|
|
1453
1453
|
if @row_vs_label
|
1454
1454
|
yield(row)
|
@@ -1478,7 +1478,7 @@ module When
|
|
1478
1478
|
@limit = $3.to_i if $3
|
1479
1479
|
rexp = Regexp.compile($1)
|
1480
1480
|
csv_row_vs_label([])
|
1481
|
-
open
|
1481
|
+
::URI.send(:open, source, 'r') do |file|
|
1482
1482
|
file.read.gsub(/[\r\n]/,'').scan(rexp) do
|
1483
1483
|
yield((1...$~.size).to_a.map {|i| $~[i]})
|
1484
1484
|
end
|
data/lib/when_exe/google_api.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
=begin
|
3
|
-
Copyright (C) 2015 Takashi SUGA
|
3
|
+
Copyright (C) 2015-2021 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,7 +8,8 @@
|
|
8
8
|
#
|
9
9
|
# GoogleAPI の Calendar API v3 への対応
|
10
10
|
#
|
11
|
-
# see {
|
11
|
+
# see {Ruby Quickstart https://developers.google.com/calendar/quickstart/ruby}
|
12
|
+
# see {Simple REST client for version V3 of the Calendar API https://googleapis.dev/ruby/google-apis-calendar_v3/v0.1.0/}
|
12
13
|
#
|
13
14
|
module When::GoogleAPI
|
14
15
|
|
@@ -17,15 +18,9 @@ module When::GoogleAPI
|
|
17
18
|
#
|
18
19
|
class Calendar
|
19
20
|
|
20
|
-
# APIClient のインスタンス
|
21
|
-
#
|
22
|
-
# @return [Google::APIClient]
|
23
|
-
#
|
24
|
-
attr_reader :client
|
25
|
-
|
26
21
|
# Calendar API のインスタンス
|
27
22
|
#
|
28
|
-
# @return [Google::
|
23
|
+
# @return [Google::Apis::CalendarV3::CalendarService]
|
29
24
|
#
|
30
25
|
attr_reader :service
|
31
26
|
|
@@ -45,24 +40,19 @@ module When::GoogleAPI
|
|
45
40
|
#
|
46
41
|
# GoogleAPI の Calendar を生成する
|
47
42
|
#
|
48
|
-
# @param [Google::
|
49
|
-
# @param [Google::APIClient::API] service
|
43
|
+
# @param [Google::Apis::CalendarV3::CalendarService] service
|
50
44
|
# @param [String] calendar_id
|
51
45
|
#
|
52
|
-
def list(
|
46
|
+
def list(service, calendar_id)
|
53
47
|
events = []
|
54
|
-
result =
|
55
|
-
:parameters => {'calendarId' => calendar_id}})
|
48
|
+
result = service.list_events(calendar_id)
|
56
49
|
loop do
|
57
|
-
events += result.
|
58
|
-
page_token = result.
|
50
|
+
events += result.items.map {|event| event.to_h}
|
51
|
+
page_token = result.next_page_token
|
59
52
|
break unless page_token
|
60
|
-
result =
|
61
|
-
:parameters => {'calendarId' => calendar_id,
|
62
|
-
'pageToken' => page_token}})
|
53
|
+
result = service.list_events(calendar_id, page_token: page_token)
|
63
54
|
end
|
64
55
|
calendar = new(events)
|
65
|
-
calendar.instance_variable_set(:@client, client)
|
66
56
|
calendar.instance_variable_set(:@service, service)
|
67
57
|
calendar.instance_variable_set(:@calendar_id, calendar_id)
|
68
58
|
calendar
|
@@ -87,7 +77,7 @@ module When::GoogleAPI
|
|
87
77
|
#
|
88
78
|
def initialize(events)
|
89
79
|
@events = events.map {|event|
|
90
|
-
next nil unless event[
|
80
|
+
next nil unless event[:status] == 'confirmed'
|
91
81
|
When::V::Event.new(event)
|
92
82
|
}.compact
|
93
83
|
end
|
@@ -114,15 +104,18 @@ class When::V::Event
|
|
114
104
|
iprops = {}
|
115
105
|
gprops.each_pair do |key, value|
|
116
106
|
case key
|
117
|
-
when
|
118
|
-
iprops['summary'] = value
|
119
|
-
when 'start', 'end'
|
107
|
+
when :start, :end
|
120
108
|
date = 'VALUE=DATE'
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
109
|
+
if value.key?(:date)
|
110
|
+
date += ':' + value[:date].strftime('%Y%m%d')
|
111
|
+
else
|
112
|
+
date += '-TIME'
|
113
|
+
date += ':' + value[:date_time].strftime('%Y%m%dT%H%M%S')
|
114
|
+
date += value[:date_time].strftime('%z') unless value[:time_zone]
|
115
|
+
end
|
116
|
+
date.sub!(':', ";TZID=#{value[:time_zone]}:") if value.key?(:time_zone)
|
117
|
+
iprops['dt' + key.to_s] = date
|
118
|
+
when :recurrence
|
126
119
|
value.map do |line|
|
127
120
|
tag, rule = line.split(':', 2)
|
128
121
|
tag.downcase!
|
@@ -132,8 +125,10 @@ class When::V::Event
|
|
132
125
|
iprops[tag] = rule
|
133
126
|
end
|
134
127
|
end
|
135
|
-
when
|
128
|
+
when :i_cal_uid
|
136
129
|
iprops['uid'] = value
|
130
|
+
when Symbol
|
131
|
+
iprops[key.to_s] = value
|
137
132
|
end
|
138
133
|
end
|
139
134
|
iprops
|
@@ -144,7 +139,7 @@ class When::V::Event
|
|
144
139
|
|
145
140
|
# Hash からの属性読み込み
|
146
141
|
def _parse_from_code(options)
|
147
|
-
if options.key?(
|
142
|
+
if options.key?(:start)
|
148
143
|
@google_api_props = options
|
149
144
|
options = self.class.gcal2ical(options)
|
150
145
|
end
|
data/lib/when_exe/icalendar.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
=begin
|
3
|
-
Copyright (C) 2011-
|
3
|
+
Copyright (C) 2011-2021 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
|
@@ -574,7 +574,7 @@ module When::V
|
|
574
574
|
#
|
575
575
|
# @return [When::TM::IntervalLength]
|
576
576
|
def default_until
|
577
|
-
@default_until ||= 1000*When::TM::Duration::YEAR
|
577
|
+
@default_until ||= 1000*(When::TM::Duration::YEAR / When::TM::Duration::DAY)
|
578
578
|
end
|
579
579
|
|
580
580
|
# ISO8601へ埋め込まれた指定に対応する iterator を生成する
|
@@ -1047,13 +1047,13 @@ module When::V
|
|
1047
1047
|
super
|
1048
1048
|
|
1049
1049
|
@child.each do |prop|
|
1050
|
-
@dtstart = prop.dtstart if (@dtstart
|
1050
|
+
@dtstart = prop.dtstart if (@dtstart.nil? || prop.dtstart < @dtstart)
|
1051
1051
|
@dtstop = prop.dtstop unless (prop.dtstop.kind_of?(When::TimeValue) &&
|
1052
1052
|
@dtstop.kind_of?(When::TimeValue) &&
|
1053
1053
|
prop.dtstop <= @dtstop)
|
1054
1054
|
[prop.tzoffsetfrom, prop.tzoffsetto].each do |tz|
|
1055
|
-
@daylight = tz if (@daylight
|
1056
|
-
@standard = tz if (@standard
|
1055
|
+
@daylight = tz if (@daylight.nil? || tz.universal_time < @daylight.universal_time)
|
1056
|
+
@standard = tz if (@standard.nil? || tz.universal_time > @standard.universal_time)
|
1057
1057
|
end
|
1058
1058
|
end
|
1059
1059
|
@tz_difference = @standard.universal_time - @daylight.universal_time
|
@@ -1107,7 +1107,7 @@ module When::V
|
|
1107
1107
|
date = prop.enum_for(current_time, direction, 1).succ
|
1108
1108
|
if (date)
|
1109
1109
|
diff = (date.universal_time - current_time).abs
|
1110
|
-
if (minimum
|
1110
|
+
if (minimum.nil? || minimum > diff)
|
1111
1111
|
event = date
|
1112
1112
|
minimum = diff
|
1113
1113
|
end
|
@@ -1402,7 +1402,7 @@ module When::V
|
|
1402
1402
|
if (dtstart && dtstart.has_time?)
|
1403
1403
|
['HOUR', 'MINUTE', 'SECOND'].each do |part|
|
1404
1404
|
by_part = 'BY' + part
|
1405
|
-
if (rule[by_part]
|
1405
|
+
if (rule[by_part].nil? && freq_index && freq_index < PostFreqIndex[by_part])
|
1406
1406
|
base = dtstart[PostFreqIndex[by_part]]
|
1407
1407
|
rule[by_part] = Logic.const_get(part.capitalize).new(by_part, base) unless (base == 0)
|
1408
1408
|
end
|
@@ -1604,7 +1604,7 @@ module When::V
|
|
1604
1604
|
nth, spec, period = ord
|
1605
1605
|
shift = (period[PostFreqIndex[@by_part]] != 0)
|
1606
1606
|
raise ArgumentError, "n*e+/-s format not permitted" if (nth || shift) && @freq_index >= When::DAY
|
1607
|
-
if (nth
|
1607
|
+
if (nth.nil? || nth>0)
|
1608
1608
|
enum = @ref.enum_for(lower_bound, :forward, {:event=>spec})
|
1609
1609
|
else
|
1610
1610
|
enum = @ref.enum_for(higher_bound, :reverse, {:event=>spec})
|
data/lib/when_exe/inspect.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
=begin
|
3
|
-
Copyright (C) 2011-
|
3
|
+
Copyright (C) 2011-2021 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
|
@@ -75,7 +75,7 @@ module When
|
|
75
75
|
# @return [String] to_h 結果を JSON文字列化したもの
|
76
76
|
#
|
77
77
|
def to_json(options={})
|
78
|
-
options[:method] = :to_m17n unless options.key?(:method)
|
78
|
+
options[:method] = :to_m17n unless options.respond_to?(:key?) && options.key?(:method)
|
79
79
|
JSON.dump(to_h(options))
|
80
80
|
end
|
81
81
|
|
@@ -603,7 +603,7 @@ module When
|
|
603
603
|
form_options[:method] = :to_m17n unless form_options.key?(:method)
|
604
604
|
persistence = options.delete(:persistence) if options.kind_of?(Hash)
|
605
605
|
retrieved = When::CalendarNote::NotesContainer.retrieve(persistence, self.to_i)
|
606
|
-
return retrieved
|
606
|
+
return retrieved if retrieved
|
607
607
|
When::CalendarNote::NotesContainer.register(_m17n_form(_notes(options), form_options), persistence, self.to_i)
|
608
608
|
end
|
609
609
|
|
data/lib/when_exe/linkeddata.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
=begin
|
3
|
-
Copyright (C) 2014-
|
3
|
+
Copyright (C) 2014-2021 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
|
@@ -379,6 +379,7 @@ module When
|
|
379
379
|
# namespace を prefix にコンパクト化する
|
380
380
|
#
|
381
381
|
def compact_namespace_to_prefix(source, prefixes, context=nil)
|
382
|
+
return source.map {|element| compact_namespace_to_prefix(element, prefixes, context)} if source.kind_of?(Array)
|
382
383
|
return source unless prefixes
|
383
384
|
prefixes.each_pair do |key, value|
|
384
385
|
Array(value).each do |namespace|
|
@@ -574,7 +575,14 @@ module When
|
|
574
575
|
value =_value_str(note[:note], note[:value])
|
575
576
|
end
|
576
577
|
id = compact_namespace_to_prefix(value, options[:prefixes], context)
|
577
|
-
|
578
|
+
if id.kind_of?(Array)
|
579
|
+
(0...id.length).each do |i|
|
580
|
+
id[i] = {'@id'=>id[i]} unless id[i] == value[i] && id[i] !~ /:\/\//
|
581
|
+
end
|
582
|
+
else
|
583
|
+
id = {'@id'=>id} unless id == value && id !~ /:\/\//
|
584
|
+
end
|
585
|
+
hash[compact_namespace_to_prefix(_note_str(note[:note]), options[:prefixes], context)] = id
|
578
586
|
end
|
579
587
|
hash
|
580
588
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
=begin
|
3
|
-
Copyright (C) 2011-
|
3
|
+
Copyright (C) 2011-2021 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
|
@@ -370,7 +370,7 @@ module When
|
|
370
370
|
contents = nil
|
371
371
|
begin
|
372
372
|
OpenURI
|
373
|
-
source = open
|
373
|
+
source = URI.send(:open, path, 'r'+mode, {:ssl_verify_mode => OpenSSL::SSL::VERIFY_NONE})
|
374
374
|
contents = source.read
|
375
375
|
ensure
|
376
376
|
@wikipedia_last_access = Time.now.to_f
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
=begin
|
3
|
-
Copyright (C) 2011-
|
3
|
+
Copyright (C) 2011-2021 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
|
@@ -313,7 +313,7 @@ module When::Parts
|
|
313
313
|
end
|
314
314
|
end
|
315
315
|
previous = @processed._include?(value)
|
316
|
-
@processed |= value
|
316
|
+
@processed |= value unless previous
|
317
317
|
registered = (previous==value) ? previous : value
|
318
318
|
registered = registered.first if registered.kind_of?(GeometricComplex)
|
319
319
|
registered.events ||=[]
|
@@ -352,7 +352,7 @@ module When::Parts
|
|
352
352
|
# eql? はオーバーライドしない
|
353
353
|
#
|
354
354
|
def self._sort(list, direction)
|
355
|
-
list = list.sort
|
355
|
+
list = (0...list.size).to_a.map {|i| [list[i], i]}.sort.map {|e| e[0]}
|
356
356
|
prev = nil
|
357
357
|
list.delete_if do |x|
|
358
358
|
if (x == prev)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
=begin
|
3
|
-
Copyright (C) 2011-
|
3
|
+
Copyright (C) 2011-2021 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
|
@@ -266,7 +266,7 @@ module When::Parts
|
|
266
266
|
#
|
267
267
|
# @return [When::Parts::GeometricComplex]
|
268
268
|
#
|
269
|
-
def
|
269
|
+
def -(duration)
|
270
270
|
self.class.new(@node.map {|node|
|
271
271
|
new_node = node.dup
|
272
272
|
new_node[0] -= duration
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
=begin
|
3
|
-
Copyright (C) 2011-
|
3
|
+
Copyright (C) 2011-2021 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
|
@@ -558,7 +558,7 @@ module When::Parts
|
|
558
558
|
raise IOError, path + ': not ready' unless real_path
|
559
559
|
args = [real_path, "1".respond_to?(:force_encoding) ? 'r:utf-8' : 'r']
|
560
560
|
args << {:ssl_verify_mode=>OpenSSL::SSL::VERIFY_NONE} if real_path =~ /\Ahttps:/
|
561
|
-
open
|
561
|
+
URI.send(:open,*args) do |file|
|
562
562
|
resource = file.read
|
563
563
|
case resource[0..5].upcase
|
564
564
|
when 'BEGIN:'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
=begin
|
3
|
-
Copyright (C) 2011-
|
3
|
+
Copyright (C) 2011-2020 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
|
@@ -152,28 +152,16 @@ module When::Parts
|
|
152
152
|
@identifier = identifier
|
153
153
|
id, query = identifier.split('?', 2)
|
154
154
|
@timezone = TZInfo::Timezone.get(id.sub(/\(.+?\)\z/,''))
|
155
|
-
unless TZInfo::
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
end
|
166
|
-
@datetime
|
167
|
-
end
|
168
|
-
}
|
169
|
-
else
|
170
|
-
TZInfo::TimeOrDateTime.class_eval %Q{
|
171
|
-
alias :_to_datetime :to_datetime
|
172
|
-
def to_datetime
|
173
|
-
@datetime ||= DateTime.new(year, mon, mday, hour, min, sec, 0, Date::GREGORIAN)
|
174
|
-
end
|
175
|
-
}
|
176
|
-
end
|
155
|
+
unless TZInfo::Timezone.method_defined?(:period_for)
|
156
|
+
TZInfo::Timezone.class_eval %Q{
|
157
|
+
def period_for(time)
|
158
|
+
period_for_utc(Time.at(time).getutc)
|
159
|
+
end
|
160
|
+
}
|
161
|
+
TZInfo::TimezonePeriod.class_eval %Q{
|
162
|
+
alias :starts_at :utc_start
|
163
|
+
alias :ends_at :utc_end
|
164
|
+
}
|
177
165
|
end
|
178
166
|
dst, std = _offsets(Time.now.to_i)
|
179
167
|
options = query ? Hash[*(query.split('&').map {|item| item.split('=',2)}.flatten)] : {}
|
@@ -204,11 +192,11 @@ module When::Parts
|
|
204
192
|
offsets = _offsets((time/When::TM::Duration::SECOND).floor)
|
205
193
|
offsets.each do |offset|
|
206
194
|
clocks[offset] ||= When::TM::Clock.new(options.merge({:zone=>offset, :tz_prop=>self}))
|
207
|
-
|
208
|
-
|
195
|
+
time_for_offset = frame.to_universal_time(cal_date, clk_time, clocks[offset])
|
196
|
+
return clocks[offsets[0]] if @timezone.period_for(Time.at((time_for_offset/When::TM::Duration::SECOND).floor)).dst?
|
209
197
|
end
|
210
198
|
end
|
211
|
-
offset = @timezone.
|
199
|
+
offset = @timezone.period_for(Time.at((time/When::TM::Duration::SECOND).floor)).utc_total_offset
|
212
200
|
clocks[offset] || When::TM::Clock.new(options.merge({:zone=>offset, :tz_prop=>self}))
|
213
201
|
end
|
214
202
|
|
@@ -220,9 +208,9 @@ module When::Parts
|
|
220
208
|
private
|
221
209
|
|
222
210
|
def _offsets(time)
|
223
|
-
now = @timezone.
|
224
|
-
past = @timezone.
|
225
|
-
future = @timezone.
|
211
|
+
now = @timezone.period_for(Time.at(time))
|
212
|
+
past = @timezone.period_for(Time.at(now.starts_at.to_time.to_i-1)) if now.starts_at
|
213
|
+
future = @timezone.period_for( now.ends_at .to_time ) if now.ends_at
|
226
214
|
std = now.utc_offset
|
227
215
|
dst = now.utc_total_offset
|
228
216
|
[past, future].each do |period|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
=begin
|
3
|
-
Copyright (C) 2011-
|
3
|
+
Copyright (C) 2011-2019 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
|
@@ -135,7 +135,7 @@ module When
|
|
135
135
|
BalineseLuniSolar = [self, [
|
136
136
|
"locale:[=en:, ja=ja:, zh=zh:, alias]",
|
137
137
|
"period:[BalineseLuniSolar=, バリ・サカ暦=, 峇里陰陽曆=]",
|
138
|
-
["[SE=, サカ暦=, 塞種紀元=, alias:Balinese_Saka_Era]
|
138
|
+
["[SE=, サカ暦=, 塞種紀元=, alias:Balinese_Saka_Era]1888-10-01", '@CE', "1966-10-01^BalineseLuniSolar1965",
|
139
139
|
"1971-07-04^BalineseLuniSolar1971",
|
140
140
|
"1993-07-08^BalineseLuniSolar1993",
|
141
141
|
"1999-06<10^BalineseLuniSolar2000",
|
@@ -198,7 +198,9 @@ module When
|
|
198
198
|
+1.5 => intercalary_month[3]}, # 閏黒分
|
199
199
|
:shift=>+8})
|
200
200
|
|
201
|
-
@origin_of_MSC
|
201
|
+
@origin_of_MSC ||= 0
|
202
|
+
|
203
|
+
@label ||= 'Balinese::BalineseLuniSolar'
|
202
204
|
|
203
205
|
@tabular = CyclicTableBased.new({
|
204
206
|
'indices' => [month_index, When::Coordinates::DefaultDayIndex],
|