timing 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d6f6f145028cd5331680c01a8365eaa4f56cfee1
4
- data.tar.gz: 3c032ab78e222d16d58ccbeb8a741c2e47c54519
3
+ metadata.gz: e9d92a18e938feee6b80f8aaa64a028be7bf2a11
4
+ data.tar.gz: afc68085d3083b521a802ae80fc5416df7dcca07
5
5
  SHA512:
6
- metadata.gz: 7e6b80824b06f9db1a4561214a518b79321cb75123558dc525f21a948b5805b0920a17b9ec1763b2d35f319afefdc81f490ba43028e3dc1b2097ceae62635945
7
- data.tar.gz: 25bec6e9461646ba7d789ca0b98f576e772162527f19187fedb15347d38da5a4dea5c6bb3b92dee883a89cb1e72078e30341f725bf499e1dd299031b85888573
6
+ metadata.gz: 2ebafcc6ae241ec71978cc47571d21fe9e7f20e393f00321373cd4edabde9e186c092f3a2affee979b900d0a3928cd8fdcedf432515529a327ac005e2132c3a3
7
+ data.tar.gz: c8375675559778a628314ee196517ad9efd8a3239b253e00a6cf5f05c073e1204df2c2bf41fa885b7243c0a8c2e7bace04b5581a685c7da23523996cefa9bd3d
@@ -1,5 +1,5 @@
1
1
  module Timing
2
- class Interval < SimpleDelegator
2
+ class Interval < TransparentProxy
3
3
 
4
4
  UNITS_NAMES = {
5
5
  s: :seconds,
@@ -312,7 +312,7 @@ module Timing
312
312
 
313
313
  class ZoneOffset < Treetop::Runtime::SyntaxNode
314
314
  def value
315
- ::ZoneOffset.parse text_value
315
+ Timing::ZoneOffset.parse text_value
316
316
  end
317
317
  end
318
318
 
@@ -24,11 +24,14 @@ module Timing
24
24
  alias_method :gmtoff, :zone_offset
25
25
 
26
26
  def +(seconds)
27
+ raise ArgumentError, "#{seconds} must be a valid seconds count" unless seconds.is_a? Numeric
27
28
  self.class.new (time + seconds), zone_offset
28
29
  end
29
30
 
30
31
  def -(seconds)
31
- self.class.new (time - seconds), zone_offset
32
+ raise ArgumentError, "#{seconds} must be a time or a valid seconds count" unless seconds.respond_to? :to_f
33
+ result = self.class.at (time.to_f - seconds.to_f), zone_offset
34
+ seconds.is_a?(Numeric) ? result : result.to_f
32
35
  end
33
36
 
34
37
  def utc?
@@ -58,6 +61,18 @@ module Timing
58
61
  time_with_offset.strftime format.gsub('%Z', '').gsub('%z', zone_offset.to_s)
59
62
  end
60
63
 
64
+ def iso8601
65
+ strftime "%FT%T#{zone_offset.iso8601}"
66
+ end
67
+
68
+ def as_json(*args)
69
+ iso8601
70
+ end
71
+
72
+ def to_json(*args)
73
+ "\"#{as_json(*args)}\""
74
+ end
75
+
61
76
  %w(hour day week month year).each do |interval|
62
77
  beginning_method_name = "beginning_of_#{interval}"
63
78
  define_method beginning_method_name do
@@ -1,3 +1,3 @@
1
1
  module Timing
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
@@ -1,5 +1,5 @@
1
1
  module Timing
2
- class ZoneOffset < SimpleDelegator
2
+ class ZoneOffset < TransparentProxy
3
3
 
4
4
  REGEXP = /^([+-]?)(\d\d):?(\d\d)$/
5
5
 
@@ -9,11 +9,11 @@ module Timing
9
9
  end
10
10
 
11
11
  def to_s
12
- hours = Interval.new(to_f).to_hours.to_i
13
- minutes = Interval.new(to_f % Interval.hours(1)).to_minutes.to_i
14
- sign = self < 0 ? '-' : '+'
12
+ "#{sign}#{hour.to_s.rjust(2, '0')}#{minute.to_s.rjust(2, '0')}"
13
+ end
15
14
 
16
- "#{sign}#{hours.to_s.rjust(2, '0')}#{minutes.to_s.rjust(2, '0')}"
15
+ def iso8601
16
+ "#{sign}#{hour.to_s.rjust(2, '0')}:#{minute.to_s.rjust(2, '0')}"
17
17
  end
18
18
 
19
19
  def inspect
@@ -32,5 +32,19 @@ module Timing
32
32
  new (Interval.hours(hours) + Interval.minutes(minutes)) * sign
33
33
  end
34
34
 
35
+ private
36
+
37
+ def hour
38
+ Interval.new(to_f).to_hours.to_i
39
+ end
40
+
41
+ def minute
42
+ Interval.new(to_f % Interval.hours(1)).to_minutes.to_i
43
+ end
44
+
45
+ def sign
46
+ self < 0 ? '-' : '+'
47
+ end
48
+
35
49
  end
36
50
  end
data/lib/timing.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'time'
2
2
  require 'date'
3
- require 'delegate'
3
+ require 'transparent_proxy'
4
4
  require 'forwardable'
5
5
  require 'treetop'
6
6
 
data/timing.gemspec CHANGED
@@ -19,7 +19,8 @@ Gem::Specification.new do |spec|
19
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- spec.add_dependency 'treetop'
22
+ spec.add_dependency 'treetop', '~> 1.6.3'
23
+ spec.add_dependency 'transparent_proxy', '~> 0.0.4'
23
24
 
24
25
  spec.add_development_dependency 'bundler', '~> 1.6'
25
26
  spec.add_development_dependency 'rake'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timing
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gabriel Naiman
@@ -14,16 +14,30 @@ dependencies:
14
14
  name: treetop
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 1.6.3
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 1.6.3
27
+ - !ruby/object:Gem::Dependency
28
+ name: transparent_proxy
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 0.0.4
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 0.0.4
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement