time-lord 0.1.5 → 0.2.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/.rvmrc +1 -1
- data/README.md +118 -36
- data/lib/time-lord.rb +7 -6
- data/lib/time-lord/version.rb +1 -1
- data/test/base.rb +18 -0
- data/time-lord.gemspec +2 -0
- metadata +39 -32
data/.rvmrc
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
# development environment upon cd'ing into the directory
|
5
5
|
|
6
6
|
# First we specify our desired <ruby>[@<gemset>], the @gemset name is optional.
|
7
|
-
environment_id="ruby-1.9.
|
7
|
+
environment_id="ruby-1.9.3-p0@time-lord"
|
8
8
|
|
9
9
|
#
|
10
10
|
# First we attempt to load the desired environment directly from the environment
|
data/README.md
CHANGED
@@ -1,53 +1,135 @@
|
|
1
1
|
time-lord
|
2
|
+
=========
|
3
|
+
|
4
|
+
**Current Version**: 0.1.5
|
5
|
+
|
6
|
+
`time-lord` is a gem that builds on the Time class to give more human expressions.
|
7
|
+
It adds a lot of nifty little ideas present in Rails helpers to the time class.
|
8
|
+
Nothing too fancy, just a little human touch to data.
|
9
|
+
|
10
|
+
|
11
|
+
Examples
|
12
|
+
--------
|
13
|
+
|
14
|
+
To use `time-lord` you need a Time, Date, or DateTime object.
|
15
|
+
You can pass an object that doesn't act like those, but you'll have to tell it to try and parse.
|
16
|
+
Even then it might not be able to, so be careful and just send Time-likes.
|
17
|
+
Here's an example or two:
|
18
|
+
|
19
|
+
``` ruby
|
20
|
+
Time.now.ago_in_words
|
21
|
+
# => "just now"
|
22
|
+
|
23
|
+
olden_times = Time.parse("1942-04-01")
|
24
|
+
|
25
|
+
"I was dancing with Queen Elizabeth #{olden_times.ago_in_words} from now!"
|
26
|
+
|
27
|
+
# => "I was dancing with Queen Elizabeth 7 decades ago from now!"
|
28
|
+
```
|
29
|
+
|
30
|
+
There's a lot more to come hopefully.
|
31
|
+
Time is fun.
|
32
|
+
|
33
|
+
|
34
|
+
Installing
|
35
|
+
----------
|
36
|
+
|
37
|
+
**Requirements**
|
38
|
+
|
39
|
+
1. Any Ruby with a Time class
|
40
|
+
2. Any Gem manager
|
41
|
+
3. A blue telephone box
|
42
|
+
|
43
|
+
Like any other gem you can install it via the `gem` command:
|
44
|
+
|
45
|
+
``` terminal
|
46
|
+
$ gem install time-lord
|
47
|
+
```
|
48
|
+
|
49
|
+
Although I suggest using `bundler`:
|
50
|
+
|
51
|
+
``` ruby
|
52
|
+
gem 'time-lord', '0.1.5'
|
53
|
+
```
|
54
|
+
|
55
|
+
|
56
|
+
**Testing**
|
57
|
+
|
58
|
+
To make sure you did everything right, just do the following:
|
59
|
+
|
60
|
+
```
|
61
|
+
$ ruby -e "puts Time.now.ago_in_words"
|
62
|
+
> just now
|
63
|
+
```
|
64
|
+
|
65
|
+
|
66
|
+
Issues & Documentation
|
67
|
+
----------------------
|
68
|
+
|
69
|
+
* [Documentation](https://github.com/krainboltgreene/time-lord/wiki)
|
70
|
+
* [Issues](https://github.com/krainboltgreene/time-lord/issues)
|
71
|
+
|
72
|
+
Absolutely feel free to contribute, please!
|
73
|
+
|
74
|
+
|
75
|
+
Changelog
|
2
76
|
---------
|
3
|
-
The ruby gem `time-lord` gives extra (needed) methods to the ruby `time` class.
|
4
|
-
Originally started as gem that gave dwevelopers the `time-ago-in-words` method for the `time` class.
|
5
|
-
It evolved into a multi-part boost to the `Time` class.
|
6
77
|
|
78
|
+
**v0.1.5**
|
79
|
+
|
80
|
+
* Changed the name of the gem, added some tests
|
7
81
|
|
8
|
-
|
9
|
-
I changed this, obviously.
|
82
|
+
**v0.1.0**
|
10
83
|
|
84
|
+
* I didn't track changelogs when this version was released
|
11
85
|
|
12
|
-
examples
|
13
|
-
========
|
14
|
-
Examples:
|
15
|
-
>> Time.now.ago_in_words # => "just now"
|
16
|
-
>> Time.parse("1942-04-01").ago_in_words # => "7 decades ago"
|
17
86
|
|
87
|
+
Contributing
|
88
|
+
------------
|
18
89
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
90
|
+
* **Fork** the repository
|
91
|
+
* **Clone the repository** locally, or **edit via Github**
|
92
|
+
* Create a **new branch** using the [Git Flow Standard](http://yakiloo.com/getting-started-git-flow/) conventions
|
93
|
+
* Commit **often** and **when important**
|
94
|
+
* **DO NOT CHANGE** ANY OF THESE (without making a new branch for *that* change):
|
95
|
+
* `*.gemspec`
|
96
|
+
* `Rakefile`
|
97
|
+
* `.rvmrc`
|
98
|
+
* `.gitignore`
|
99
|
+
* Any part of the git history
|
100
|
+
* **Write tests** specifically for the changes you've made, if no test exist
|
101
|
+
* **Push** your feature or hotfix branch to Github.
|
102
|
+
* Make a **Pull Request**
|
28
103
|
|
29
|
-
install
|
30
|
-
=======
|
31
|
-
`gem install time-lord`
|
32
104
|
|
105
|
+
Credits
|
106
|
+
-------
|
33
107
|
|
34
|
-
|
35
|
-
|
36
|
-
|
108
|
+
* [Simon Hørup Eskildsen](https://github.com/Sirupsen)
|
109
|
+
* [Henrik Enggaard](mailto: https://github.com/henrikh)
|
110
|
+
* [James Larkby-Lahet](https://github.com/wolfwood)
|
37
111
|
|
38
112
|
|
39
|
-
|
40
|
-
|
41
|
-
* https://github.com/krainboltgreene
|
42
|
-
* https://github.com/sirupsen
|
113
|
+
License
|
114
|
+
-------
|
43
115
|
|
116
|
+
Copyright (c) 2011 Kurtis Rainbolt-Greene
|
44
117
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
118
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
119
|
+
a copy of this software and associated documentation files (the
|
120
|
+
"Software"), to deal in the Software without restriction, including
|
121
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
122
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
123
|
+
permit persons to whom the Software is furnished to do so, subject to
|
124
|
+
the following conditions:
|
49
125
|
|
126
|
+
The above copyright notice and this permission notice shall be
|
127
|
+
included in all copies or substantial portions of the Software.
|
50
128
|
|
51
|
-
|
52
|
-
|
53
|
-
|
129
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
130
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
131
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
132
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
133
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
134
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
135
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/lib/time-lord.rb
CHANGED
@@ -20,22 +20,21 @@ class Time
|
|
20
20
|
Eon = 1.0/0
|
21
21
|
|
22
22
|
def ago_in_words
|
23
|
-
|
24
23
|
# Find the time difference between the time provided and the current time.
|
25
24
|
difference = get_time_difference_from self
|
26
25
|
|
27
26
|
# Catch less than 1 second differences.
|
28
|
-
return "just now" if
|
27
|
+
return "just now" if (-1...1) === difference
|
29
28
|
|
30
29
|
name = get_unit_name_from difference
|
31
30
|
amount = get_unit_amount_from difference
|
32
|
-
count = get_unit_count_from
|
31
|
+
count = get_unit_count_from(difference, amount).abs
|
33
32
|
|
34
33
|
# Determine if unit name needs pluralization.
|
35
34
|
name += "s" if count > 1
|
36
35
|
|
37
36
|
# Return the remaining string.
|
38
|
-
"#{count} #{name} ago"
|
37
|
+
difference >= 0 ? "#{count} #{name} ago" : "in #{count} #{name}"
|
39
38
|
end
|
40
39
|
|
41
40
|
private
|
@@ -49,7 +48,7 @@ class Time
|
|
49
48
|
end
|
50
49
|
|
51
50
|
def get_unit_name_from difference
|
52
|
-
case difference
|
51
|
+
case difference.abs
|
53
52
|
when Second...Minute then "second"
|
54
53
|
when Minute...Hour then "minute"
|
55
54
|
when Hour...Day then "hour"
|
@@ -64,7 +63,7 @@ class Time
|
|
64
63
|
end
|
65
64
|
|
66
65
|
def get_unit_amount_from difference
|
67
|
-
case difference
|
66
|
+
case difference.abs
|
68
67
|
when Second...Minute then Second
|
69
68
|
when Minute...Hour then Minute
|
70
69
|
when Hour...Day then Hour
|
@@ -79,4 +78,6 @@ class Time
|
|
79
78
|
end
|
80
79
|
|
81
80
|
alias_method :time_ago_in_words, :ago_in_words
|
81
|
+
alias_method :distance_in_words, :ago_in_words
|
82
|
+
alias_method :time_distance_in_words, :ago_in_words
|
82
83
|
end
|
data/lib/time-lord/version.rb
CHANGED
data/test/base.rb
CHANGED
@@ -13,90 +13,108 @@ describe Time do
|
|
13
13
|
describe "seconds" do
|
14
14
|
before do
|
15
15
|
@past = Time.now - 30 * Time::Second
|
16
|
+
@future = Time.now + 30 * Time::Second
|
16
17
|
end
|
17
18
|
|
18
19
|
it 'returns the correct string' do
|
19
20
|
@past.time_ago_in_words.must_equal "30 seconds ago"
|
21
|
+
@future.distance_in_words.must_equal "in 30 seconds"
|
20
22
|
end
|
21
23
|
end
|
22
24
|
|
23
25
|
describe "minutes" do
|
24
26
|
before do
|
25
27
|
@past = Time.now - 15 * Time::Minute
|
28
|
+
@future = Time.now + 15 * Time::Minute
|
26
29
|
end
|
27
30
|
|
28
31
|
it 'returns the correct string' do
|
29
32
|
@past.time_ago_in_words.must_equal "15 minutes ago"
|
33
|
+
@future.distance_in_words.must_equal "in 15 minutes"
|
30
34
|
end
|
31
35
|
end
|
32
36
|
|
33
37
|
describe "singular form for 1" do
|
34
38
|
before do
|
35
39
|
@past = Time.now - 1 * Time::Minute
|
40
|
+
@future = Time.now + 1 * Time::Minute
|
36
41
|
end
|
37
42
|
|
38
43
|
it 'returns the correct string' do
|
39
44
|
@past.time_ago_in_words.must_equal "1 minute ago"
|
45
|
+
@future.distance_in_words.must_equal "in 1 minute"
|
40
46
|
end
|
41
47
|
end
|
42
48
|
|
43
49
|
describe 'hours' do
|
44
50
|
before do
|
45
51
|
@past = Time.now - 4 * Time::Hour
|
52
|
+
@future = Time.now + 4 * Time::Hour
|
46
53
|
end
|
47
54
|
|
48
55
|
it 'returns the correct string' do
|
49
56
|
@past.time_ago_in_words.must_equal "4 hours ago"
|
57
|
+
@future.distance_in_words.must_equal "in 4 hours"
|
50
58
|
end
|
51
59
|
end
|
52
60
|
|
53
61
|
describe 'days' do
|
54
62
|
before do
|
55
63
|
@past = Time.now - 3 * Time::Day
|
64
|
+
@future = Time.now + 3 * Time::Day
|
56
65
|
end
|
57
66
|
|
58
67
|
it 'returns the correct string' do
|
59
68
|
@past.time_ago_in_words.must_equal "3 days ago"
|
69
|
+
@future.distance_in_words.must_equal "in 3 days"
|
60
70
|
end
|
61
71
|
end
|
62
72
|
|
63
73
|
describe 'weeks' do
|
64
74
|
before do
|
65
75
|
@past = Time.now - 2 * Time::Week
|
76
|
+
@future = Time.now + 2 * Time::Week
|
66
77
|
end
|
67
78
|
|
68
79
|
it 'returns the correct string' do
|
69
80
|
@past.time_ago_in_words.must_equal "2 weeks ago"
|
81
|
+
@future.distance_in_words.must_equal "in 2 weeks"
|
70
82
|
end
|
71
83
|
end
|
72
84
|
|
73
85
|
describe 'months' do
|
74
86
|
before do
|
75
87
|
@past = Time.now - 7 * Time::Month
|
88
|
+
@future = Time.now + 7 * Time::Month
|
76
89
|
end
|
77
90
|
|
78
91
|
it 'returns the correct string' do
|
79
92
|
@past.time_ago_in_words.must_equal "7 months ago"
|
93
|
+
@future.distance_in_words.must_equal "in 7 months"
|
80
94
|
end
|
81
95
|
end
|
82
96
|
|
83
97
|
describe 'years' do
|
84
98
|
before do
|
85
99
|
@past = Time.now - 3 * Time::Year
|
100
|
+
@future = Time.now + 3 * Time::Year
|
86
101
|
end
|
87
102
|
|
88
103
|
it 'returns the correct string' do
|
89
104
|
@past.time_ago_in_words.must_equal "3 years ago"
|
105
|
+
@future.distance_in_words.must_equal "in 3 years"
|
90
106
|
end
|
91
107
|
end
|
92
108
|
|
93
109
|
describe 'millennium' do
|
94
110
|
before do
|
95
111
|
@past = Time.now - 4 * Time::Millennium
|
112
|
+
@future = Time.now + 4 * Time::Millennium
|
96
113
|
end
|
97
114
|
|
98
115
|
it 'returns the correct string' do
|
99
116
|
@past.time_ago_in_words.must_equal "4 millenniums ago"
|
117
|
+
@future.distance_in_words.must_equal "in 4 millenniums"
|
100
118
|
end
|
101
119
|
end
|
102
120
|
end
|
data/time-lord.gemspec
CHANGED
metadata
CHANGED
@@ -1,31 +1,36 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: time-lord
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.5
|
4
5
|
prerelease:
|
5
|
-
version: 0.1.5
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Kurtis Rainbolt-Greene
|
9
|
-
-
|
9
|
+
- Simon Hørup Eskildsen
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
13
|
+
date: 2011-11-30 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rake
|
17
|
+
requirement: &2152296180 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
23
|
+
type: :development
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *2152296180
|
18
26
|
description: This is a gem that adds a ton of extras to the Time class.
|
19
|
-
email:
|
27
|
+
email:
|
20
28
|
- kurtisrainboltgreene@gmail.com
|
21
29
|
- sirup@sirupsen.com
|
22
30
|
executables: []
|
23
|
-
|
24
31
|
extensions: []
|
25
|
-
|
26
32
|
extra_rdoc_files: []
|
27
|
-
|
28
|
-
files:
|
33
|
+
files:
|
29
34
|
- .gitignore
|
30
35
|
- .rvmrc
|
31
36
|
- .yardoc/checksums
|
@@ -56,34 +61,36 @@ files:
|
|
56
61
|
- test/base.rb
|
57
62
|
- test/helper.rb
|
58
63
|
- time-lord.gemspec
|
59
|
-
has_rdoc: true
|
60
64
|
homepage: http://github.com/krainboltgreene/time-lord#README
|
61
65
|
licenses: []
|
62
|
-
|
63
66
|
post_install_message:
|
64
67
|
rdoc_options: []
|
65
|
-
|
66
|
-
require_paths:
|
68
|
+
require_paths:
|
67
69
|
- lib
|
68
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
70
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
69
71
|
none: false
|
70
|
-
requirements:
|
71
|
-
- -
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
version:
|
74
|
-
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
segments:
|
77
|
+
- 0
|
78
|
+
hash: 504416042286362366
|
79
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
80
|
none: false
|
76
|
-
requirements:
|
77
|
-
- -
|
78
|
-
- !ruby/object:Gem::Version
|
79
|
-
version:
|
81
|
+
requirements:
|
82
|
+
- - ! '>='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
segments:
|
86
|
+
- 0
|
87
|
+
hash: 504416042286362366
|
80
88
|
requirements: []
|
81
|
-
|
82
89
|
rubyforge_project:
|
83
|
-
rubygems_version: 1.
|
90
|
+
rubygems_version: 1.8.10
|
84
91
|
signing_key:
|
85
92
|
specification_version: 3
|
86
93
|
summary: Adding various bonuses to the Time class.
|
87
|
-
test_files:
|
94
|
+
test_files:
|
88
95
|
- test/base.rb
|
89
96
|
- test/helper.rb
|