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.
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :build:
3
3
  :minor: 3
4
- :patch: 2
4
+ :patch: 5
5
5
  :major: 0
@@ -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 = TimeCrisis::Time
20
- TCDate = TimeCrisis::Date
21
- TCDateTime = TimeCrisis::DateTime
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
- ::TimeCrisis::DateTime.civil(year, month, day, 0, 0, 0, 0)
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, minute, second, Rational(offset, 86400))
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.to_i)
40
+ ::Time.at(self.to_f)
41
41
  end
42
42
 
43
43
  def to_tc_time
44
- ::TimeCrisis::Time.at(self.to_i)
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
- class DateTime
2
- def in_time_zone(zone = ::TimeCrisis::Time.zone)
3
- TimeCrisis::TimeWithZone.new(utc? ? self : getutc, ::TimeCrisis::Time.__send__(:get_zone, zone))
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.to_i)
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[:time_zone] || zone_default
9
+ Thread.current[:tc_time_zone] || zone_default
10
10
  end
11
11
 
12
12
  def zone=(time_zone)
13
- Thread.current[:time_zone] = get_zone(time_zone)
13
+ Thread.current[:tc_time_zone] = get_zone(time_zone)
14
14
  end
15
15
 
16
16
  def use_zone(time_zone)
@@ -1,4 +1,65 @@
1
1
  module TimeCrisis
2
- class Time < ::Time
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
@@ -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.2"
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.2
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