time_crisis 0.3.2 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION.yml +1 -1
- data/lib/time_crisis.rb +10 -3
- data/lib/time_crisis/conversions.rb +12 -0
- data/lib/time_crisis/support/ext/date/conversions.rb +3 -2
- data/lib/time_crisis/support/ext/date_time/conversions.rb +4 -4
- data/lib/time_crisis/support/ext/date_time/zones.rb +5 -3
- data/lib/time_crisis/support/ext/time/calculations.rb +1 -16
- data/lib/time_crisis/support/ext/time/conversions.rb +1 -11
- data/lib/time_crisis/support/ext/time/marshal_with_utc_flag.rb +0 -10
- data/lib/time_crisis/support/ext/time/zones.rb +2 -2
- data/lib/time_crisis/time.rb +62 -1
- data/lib/time_crisis/to_json.rb +19 -0
- data/time_crisis.gemspec +2 -1
- metadata +2 -1
data/VERSION.yml
CHANGED
data/lib/time_crisis.rb
CHANGED
@@ -4,6 +4,7 @@ require 'time_crisis/datetime'
|
|
4
4
|
require 'time_crisis/tzinfo'
|
5
5
|
require 'time_crisis/support'
|
6
6
|
require 'time_crisis/conversions'
|
7
|
+
require 'time_crisis/to_json'
|
7
8
|
require 'time_crisis/date_range'
|
8
9
|
require 'time_crisis/named_months'
|
9
10
|
require 'time_crisis/meteorological_seasons'
|
@@ -16,6 +17,12 @@ require 'time_crisis/holiday'
|
|
16
17
|
::TimeCrisis::Time.zone ||= ::Time.now.zone
|
17
18
|
|
18
19
|
# not sure about making this a default behavior
|
19
|
-
TCTime
|
20
|
-
|
21
|
-
|
20
|
+
def TCTime
|
21
|
+
TimeCrisis::Time
|
22
|
+
end
|
23
|
+
def TCDate
|
24
|
+
TimeCrisis::Date
|
25
|
+
end
|
26
|
+
def TCDateTime
|
27
|
+
TimeCrisis::DateTime
|
28
|
+
end
|
@@ -6,6 +6,10 @@ class ::Date
|
|
6
6
|
def to_tc_datetime
|
7
7
|
TimeCrisis::DateTime.civil(year, month, day, 0, 0, 0, 0)
|
8
8
|
end
|
9
|
+
|
10
|
+
def to_tc_time(form = :local)
|
11
|
+
::TimeCrisis::Time.send(form, year, month, day)
|
12
|
+
end
|
9
13
|
end
|
10
14
|
|
11
15
|
class ::Time
|
@@ -16,6 +20,10 @@ class ::Time
|
|
16
20
|
def to_tc_datetime
|
17
21
|
TimeCrisis::DateTime.civil(year, month, day, hour, min, sec, 0, utc_offset)
|
18
22
|
end
|
23
|
+
|
24
|
+
def to_tc_time
|
25
|
+
TimeCrisis::Time.at(self.to_f)
|
26
|
+
end
|
19
27
|
end
|
20
28
|
|
21
29
|
class ::DateTime
|
@@ -26,6 +34,10 @@ class ::DateTime
|
|
26
34
|
def to_tc_datetime
|
27
35
|
TimeCrisis::DateTime.civil(year, month, day, hour, min, sec, 0, (offset * 86400).to_i)
|
28
36
|
end
|
37
|
+
|
38
|
+
def to_tc_time
|
39
|
+
TimeCrisis::Time.at(self.to_f)
|
40
|
+
end
|
29
41
|
end
|
30
42
|
|
31
43
|
class ::String
|
@@ -32,8 +32,9 @@ module TimeCrisis
|
|
32
32
|
self
|
33
33
|
end
|
34
34
|
|
35
|
-
def to_tc_datetime
|
36
|
-
|
35
|
+
def to_tc_datetime(form = :local)
|
36
|
+
offset = form == :local ? (Time.zone.now.utc_offset rescue Time.now.utc_offset) : 0
|
37
|
+
::TimeCrisis::DateTime.civil(year, month, day, 0, 0, 0, 0, offset)
|
37
38
|
end
|
38
39
|
|
39
40
|
def to_tc_time(form = :local)
|
@@ -33,15 +33,15 @@ module TimeCrisis
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def to_datetime
|
36
|
-
::DateTime.civil(year, month, day, hour,
|
36
|
+
::DateTime.civil(year, month, day, hour, min, second, Rational(offset, 86400))
|
37
37
|
end
|
38
38
|
|
39
39
|
def to_time
|
40
|
-
::Time.at(self.
|
40
|
+
::Time.at(self.to_f)
|
41
41
|
end
|
42
42
|
|
43
43
|
def to_tc_time
|
44
|
-
::TimeCrisis::Time.at(self.
|
44
|
+
::TimeCrisis::Time.at(self.to_f)
|
45
45
|
end
|
46
46
|
|
47
47
|
def xmlschema
|
@@ -60,7 +60,7 @@ module TimeCrisis
|
|
60
60
|
|
61
61
|
def seconds_since_unix_epoch
|
62
62
|
seconds_per_day = 86_400
|
63
|
-
(self - ::TimeCrisis::DateTime.civil(1970)) * seconds_per_day
|
63
|
+
(self.utc - ::TimeCrisis::DateTime.civil(1970, 1, 1)) * seconds_per_day
|
64
64
|
end
|
65
65
|
end
|
66
66
|
end
|
@@ -1,5 +1,7 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
module TimeCrisis
|
2
|
+
class DateTime
|
3
|
+
def in_time_zone(zone = ::TimeCrisis::Time.zone)
|
4
|
+
TimeCrisis::TimeWithZone.new(utc? ? self : getutc, ::TimeCrisis::Time.__send__(:get_zone, zone))
|
5
|
+
end
|
4
6
|
end
|
5
7
|
end
|
@@ -8,7 +8,7 @@ module TimeCrisis
|
|
8
8
|
|
9
9
|
class << self
|
10
10
|
def ===(other)
|
11
|
-
other.is_a?(::Time)
|
11
|
+
other.is_a?(::Time) || other.is_a?(::TimeCrisis::Time)
|
12
12
|
end
|
13
13
|
|
14
14
|
def days_in_month(month, year = now.year)
|
@@ -186,11 +186,6 @@ module TimeCrisis
|
|
186
186
|
def tomorrow
|
187
187
|
advance(:days => 1)
|
188
188
|
end
|
189
|
-
|
190
|
-
if instance_methods.include?('plus_without_duration')
|
191
|
-
undef_method :+
|
192
|
-
alias_method :+, :plus_without_duration
|
193
|
-
end
|
194
189
|
|
195
190
|
def plus_with_duration(other) #:nodoc:
|
196
191
|
if TimeCrisis::Duration === other
|
@@ -201,11 +196,6 @@ module TimeCrisis
|
|
201
196
|
end
|
202
197
|
alias_method :plus_without_duration, :+
|
203
198
|
alias_method :+, :plus_with_duration
|
204
|
-
|
205
|
-
if instance_methods.include?('minus_without_duration')
|
206
|
-
undef_method :-
|
207
|
-
alias_method :-, :minus_without_duration
|
208
|
-
end
|
209
199
|
|
210
200
|
def minus_with_duration(other) #:nodoc:
|
211
201
|
if TimeCrisis::Duration === other
|
@@ -223,11 +213,6 @@ module TimeCrisis
|
|
223
213
|
end
|
224
214
|
alias_method :minus_without_coercion, :-
|
225
215
|
alias_method :-, :minus_with_coercion
|
226
|
-
|
227
|
-
if instance_methods.include?('compare_without_coercion')
|
228
|
-
undef_method :<=>
|
229
|
-
alias_method :<=>, :compare_without_coercion
|
230
|
-
end
|
231
216
|
|
232
217
|
def compare_with_coercion(other)
|
233
218
|
other = other.comparable_time if other.respond_to?(:comparable_time)
|
@@ -10,11 +10,6 @@ module TimeCrisis
|
|
10
10
|
:long => "%B %d, %Y %H:%M",
|
11
11
|
:rfc822 => lambda { |time| time.strftime("%a, %d %b %Y %H:%M:%S #{time.formatted_offset(false)}") }
|
12
12
|
}
|
13
|
-
|
14
|
-
if instance_methods.include?('to_default_s')
|
15
|
-
undef_method :to_s
|
16
|
-
alias_method :to_s, :to_default_s
|
17
|
-
end
|
18
13
|
|
19
14
|
def to_formatted_s(format = :default)
|
20
15
|
if formatter = DATE_FORMATS[format]
|
@@ -29,11 +24,6 @@ module TimeCrisis
|
|
29
24
|
def formatted_offset(colon = true, alternate_utc_string = nil)
|
30
25
|
utc? && alternate_utc_string || TimeCrisis::TimeZone.seconds_to_utc_offset(utc_offset, colon)
|
31
26
|
end
|
32
|
-
|
33
|
-
if instance_methods.include?('default_inspect')
|
34
|
-
undef_method :inspect
|
35
|
-
alias_method :inspect, :default_inspect
|
36
|
-
end
|
37
27
|
|
38
28
|
def readable_inspect
|
39
29
|
"#<TimeCrisis::Time #{self.to_s(:rfc822)}>"
|
@@ -46,7 +36,7 @@ module TimeCrisis
|
|
46
36
|
end
|
47
37
|
|
48
38
|
def to_time
|
49
|
-
::Time.at(self.
|
39
|
+
::Time.at(self.to_f)
|
50
40
|
end
|
51
41
|
|
52
42
|
def to_datetime
|
@@ -2,11 +2,6 @@ if RUBY_VERSION < '1.9'
|
|
2
2
|
module TimeCrisis
|
3
3
|
class Time
|
4
4
|
class << self
|
5
|
-
if respond_to?(:_original_load)
|
6
|
-
undef_method :_load
|
7
|
-
alias_method :_load, :_original_load
|
8
|
-
end
|
9
|
-
|
10
5
|
alias_method :_original_load, :_load
|
11
6
|
def _load(marshaled_time)
|
12
7
|
time = _original_load(marshaled_time)
|
@@ -15,11 +10,6 @@ if RUBY_VERSION < '1.9'
|
|
15
10
|
end
|
16
11
|
end
|
17
12
|
|
18
|
-
if respond_to?(:_original_dump)
|
19
|
-
undef_method :_dump
|
20
|
-
alias_method :_dump, :_original_dump
|
21
|
-
end
|
22
|
-
|
23
13
|
alias_method :_original_dump, :_dump
|
24
14
|
def _dump(*args)
|
25
15
|
obj = frozen? ? dup : self
|
@@ -6,11 +6,11 @@ module TimeCrisis
|
|
6
6
|
attr_accessor :zone_default
|
7
7
|
|
8
8
|
def zone
|
9
|
-
Thread.current[:
|
9
|
+
Thread.current[:tc_time_zone] || zone_default
|
10
10
|
end
|
11
11
|
|
12
12
|
def zone=(time_zone)
|
13
|
-
Thread.current[:
|
13
|
+
Thread.current[:tc_time_zone] = get_zone(time_zone)
|
14
14
|
end
|
15
15
|
|
16
16
|
def use_zone(time_zone)
|
data/lib/time_crisis/time.rb
CHANGED
@@ -1,4 +1,65 @@
|
|
1
1
|
module TimeCrisis
|
2
|
-
|
2
|
+
Time = ::Time.dup
|
3
|
+
end
|
4
|
+
|
5
|
+
if defined?(::ActiveSupport)
|
6
|
+
module TimeCrisis
|
7
|
+
class Time
|
8
|
+
#======================================================================>
|
9
|
+
# try to get back original versions of methods
|
10
|
+
|
11
|
+
if instance_methods.include?('plus_without_duration')
|
12
|
+
alias :+ :plus_without_duration
|
13
|
+
undef :plus_without_duration
|
14
|
+
undef :plus_with_duration
|
15
|
+
end
|
16
|
+
|
17
|
+
if instance_methods.include?('minus_without_duration')
|
18
|
+
alias :- :minus_without_duration
|
19
|
+
undef :minus_without_duration
|
20
|
+
undef :minus_with_duration
|
21
|
+
end
|
22
|
+
|
23
|
+
if instance_methods.include?('minus_without_coercion')
|
24
|
+
undef :minus_without_coercion
|
25
|
+
undef :minus_with_coercion
|
26
|
+
end
|
27
|
+
|
28
|
+
if instance_methods.include?('compare_without_coercion')
|
29
|
+
alias :<=> :compare_without_coercion
|
30
|
+
undef :compare_without_coercion
|
31
|
+
undef :compare_with_coercion
|
32
|
+
end
|
33
|
+
|
34
|
+
if instance_methods.include?('default_inspect')
|
35
|
+
alias :inspect :default_inspect
|
36
|
+
undef :default_inspect
|
37
|
+
undef :readable_inspect
|
38
|
+
end
|
39
|
+
|
40
|
+
class << self
|
41
|
+
if respond_to?(:_original_load)
|
42
|
+
alias :_load :_original_load
|
43
|
+
undef :_original_load
|
44
|
+
end
|
45
|
+
|
46
|
+
if respond_to?(:_original_dump)
|
47
|
+
alias :_dump :_original_dump
|
48
|
+
undef :_original_dump
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
#======================================================================>
|
53
|
+
|
54
|
+
class << self
|
55
|
+
[
|
56
|
+
:zone_default, :zone_default=, :zone, :zone=,
|
57
|
+
:use_zone, :current, :get_zone
|
58
|
+
].each {|method| undef_method(method) if respond_to?(method)}
|
59
|
+
end
|
60
|
+
|
61
|
+
undef :in_time_zone if instance_methods.include?('in_time_zone')
|
62
|
+
|
63
|
+
end
|
3
64
|
end
|
4
65
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module TimeCrisis
|
2
|
+
class Date
|
3
|
+
def to_json(options = nil)
|
4
|
+
%("#{strftime("%Y-%m-%d")}")
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
class DateTime
|
9
|
+
def to_json(options = nil)
|
10
|
+
xmlschema.inspect
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class Time
|
15
|
+
def to_json(options = nil)
|
16
|
+
xmlschema.inspect
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/time_crisis.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{time_crisis}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Travis Tilley"]
|
@@ -53,6 +53,7 @@ Gem::Specification.new do |s|
|
|
53
53
|
"lib/time_crisis/support/time_with_zone.rb",
|
54
54
|
"lib/time_crisis/support/values/time_zone.rb",
|
55
55
|
"lib/time_crisis/time.rb",
|
56
|
+
"lib/time_crisis/to_json.rb",
|
56
57
|
"lib/time_crisis/tzinfo.rb",
|
57
58
|
"lib/time_crisis/tzinfo/LICENSE",
|
58
59
|
"lib/time_crisis/tzinfo/data_timezone.rb",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: time_crisis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Travis Tilley
|
@@ -59,6 +59,7 @@ files:
|
|
59
59
|
- lib/time_crisis/support/time_with_zone.rb
|
60
60
|
- lib/time_crisis/support/values/time_zone.rb
|
61
61
|
- lib/time_crisis/time.rb
|
62
|
+
- lib/time_crisis/to_json.rb
|
62
63
|
- lib/time_crisis/tzinfo.rb
|
63
64
|
- lib/time_crisis/tzinfo/LICENSE
|
64
65
|
- lib/time_crisis/tzinfo/data_timezone.rb
|