moments 0.0.1.alpha → 0.0.2.alpha
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +4 -1
- data/README.md +16 -1
- data/lib/moments/difference.rb +40 -40
- data/lib/moments/version.rb +1 -1
- data/moments.gemspec +2 -1
- data/spec/lib/moments/difference_spec.rb +1 -0
- data/spec/lib/moments_spec.rb +7 -0
- data/spec/spec_helper.rb +7 -1
- metadata +21 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50e1bdbcf9a083bb6213223ff6f9558bb8871c0f
|
4
|
+
data.tar.gz: b5657505ec91e49a9ca89de5a0e299a7c5fec436
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1c3176a225c6674a199dee03fe9d60912fb71f3eaa4adfa9d88f1c2e4a2215e7d3dfc9b5c76136de67a6945cf80fca4f4c96451de34379c347dac377ea10676
|
7
|
+
data.tar.gz: df0f0200d5bf1a5b8164751cbc4c242e79dc5de030302931de003fe88c14a5de3a95b511fd2898caabb1e147be8b592c0780052052ec49a11ab965543be1a48d
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
-
# Moments
|
1
|
+
# Moments [![Gem Version](https://badge.fury.io/rb/moments.svg)](http://badge.fury.io/rb/moments)
|
2
2
|
|
3
3
|
[![Build Status](https://travis-ci.org/excpt/moments.svg?branch=master)](https://travis-ci.org/excpt/moments)
|
4
4
|
[![Code Climate](https://codeclimate.com/github/excpt/moments.png)](https://codeclimate.com/github/excpt/moments)
|
5
|
+
[![Test Coverage](https://codeclimate.com/github/excpt/moments/badges/coverage.svg)](https://codeclimate.com/github/excpt/moments)
|
6
|
+
[![Dependency Status](https://gemnasium.com/excpt/moments.svg)](https://gemnasium.com/excpt/moments)
|
5
7
|
|
6
8
|
Handles time differences and calculations.
|
7
9
|
|
@@ -21,6 +23,19 @@ Or install it yourself as:
|
|
21
23
|
|
22
24
|
## Usage
|
23
25
|
|
26
|
+
```ruby
|
27
|
+
require 'moments'
|
28
|
+
|
29
|
+
t1 = Time.now
|
30
|
+
t2 = Time.new 2020, 1, 1
|
31
|
+
|
32
|
+
# Important: For now t1 must be equal or less than t2
|
33
|
+
diff = Moments.difference t1, t2
|
34
|
+
|
35
|
+
puts diff.to_hash
|
36
|
+
# Output {:years=>5, :months=>7, :days=>5, :hours=>19, :minutes=>29, :seconds=>6}
|
37
|
+
```
|
38
|
+
|
24
39
|
## Contributing
|
25
40
|
|
26
41
|
1. Fork it ( https://github.com/excpt/moments/fork )
|
data/lib/moments/difference.rb
CHANGED
@@ -29,55 +29,55 @@ module Moments
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def precise_difference
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
seconds += 60
|
41
|
-
minutes -= 1
|
42
|
-
end
|
32
|
+
@diff = {
|
33
|
+
seconds: @to.sec - @from.sec,
|
34
|
+
minutes: @to.min - @from.min,
|
35
|
+
hours: @to.hour - @from.hour,
|
36
|
+
days: @to.day - @from.day,
|
37
|
+
months: @to.month - @from.month,
|
38
|
+
years: @to.year - @from.year,
|
39
|
+
}
|
43
40
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
41
|
+
calculate :seconds, :minutes
|
42
|
+
calculate :minutes, :hours
|
43
|
+
calculate :hours, :days, 24
|
44
|
+
calculate_days
|
45
|
+
calculate :months, :years, 12
|
48
46
|
|
49
|
-
|
50
|
-
|
51
|
-
days -= 1
|
52
|
-
end
|
47
|
+
@diff
|
48
|
+
end
|
53
49
|
|
54
|
-
|
55
|
-
previous_month_days = (Time.new(@to.year, @to.month, 1) - 1).day
|
50
|
+
private :precise_difference
|
56
51
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
52
|
+
def calculate(attr, subtr, increment = 60)
|
53
|
+
if @diff[attr] < 0
|
54
|
+
@diff[attr] += increment
|
55
|
+
@diff[subtr] -= 1
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
private :calculate
|
62
60
|
|
63
|
-
|
61
|
+
def calculate_days
|
62
|
+
if @diff[:days] < 0
|
63
|
+
previous_month_days = (Time.new(@to.year, @to.month, 1) - 1).day
|
64
|
+
@diff[:days] = precise_previous_month_days(@diff[:days], previous_month_days, @from.day)
|
65
|
+
@diff[:months] -= 1
|
64
66
|
end
|
67
|
+
end
|
65
68
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
+
private :calculate_days
|
70
|
+
|
71
|
+
def precise_previous_month_days(days, previous, from)
|
72
|
+
if previous < from
|
73
|
+
days = previous + days + (from - previous)
|
74
|
+
else
|
75
|
+
days = previous + days
|
69
76
|
end
|
70
77
|
|
71
|
-
|
72
|
-
years: years,
|
73
|
-
months: months,
|
74
|
-
days: days,
|
75
|
-
hours: hours,
|
76
|
-
minutes: minutes,
|
77
|
-
seconds: seconds
|
78
|
-
}
|
78
|
+
days
|
79
79
|
end
|
80
80
|
|
81
|
-
private :
|
81
|
+
private :precise_previous_month_days
|
82
82
|
end
|
83
|
-
end
|
83
|
+
end
|
data/lib/moments/version.rb
CHANGED
data/moments.gemspec
CHANGED
@@ -18,7 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_development_dependency "bundler"
|
21
|
+
spec.add_development_dependency "bundler"
|
22
22
|
spec.add_development_dependency "rake"
|
23
23
|
spec.add_development_dependency "rspec"
|
24
|
+
spec.add_development_dependency "codeclimate-test-reporter"
|
24
25
|
end
|
data/spec/lib/moments_spec.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'spec_helper'
|
1
2
|
require_relative '../../lib/moments.rb'
|
2
3
|
|
3
4
|
describe Moments do
|
@@ -17,5 +18,11 @@ describe Moments do
|
|
17
18
|
|
18
19
|
Moments.difference(from, to).should be_a Moments::Difference
|
19
20
|
end
|
21
|
+
|
22
|
+
it '#difference should raise an error if :from is greater than :to' do
|
23
|
+
expect do
|
24
|
+
Moments.difference(to, from)
|
25
|
+
end.to raise_error
|
26
|
+
end
|
20
27
|
end
|
21
28
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,11 @@
|
|
1
|
+
require "codeclimate-test-reporter"
|
2
|
+
CodeClimate::TestReporter.start
|
3
|
+
|
1
4
|
RSpec.configure do |config|
|
2
|
-
config.
|
5
|
+
config.expect_with :rspec do |c|
|
6
|
+
c.syntax = [:should, :expect]
|
7
|
+
end
|
8
|
+
|
3
9
|
config.run_all_when_everything_filtered = true
|
4
10
|
config.filter_run :focus
|
5
11
|
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: moments
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2.alpha
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Rudat
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '0'
|
20
20
|
type: :development
|
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: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: codeclimate-test-reporter
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
description: ''
|
56
70
|
email:
|
57
71
|
- timrudat@gmail.com
|
@@ -93,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
93
107
|
version: 1.3.1
|
94
108
|
requirements: []
|
95
109
|
rubyforge_project:
|
96
|
-
rubygems_version: 2.
|
110
|
+
rubygems_version: 2.4.1
|
97
111
|
signing_key:
|
98
112
|
specification_version: 4
|
99
113
|
summary: Handles time differences and calculations.
|