timefly 0.1.1 → 0.2.0
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.
- checksums.yaml +4 -4
- data/lib/timefly.rb +48 -25
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68966e985e8adf1b5a47cde58c511d72bf7cc7c0
|
4
|
+
data.tar.gz: a335b6412bc2a55270ae6ca4a9465e87f953d9a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2b4aa43b689a058d94abf9c98fdfd37ea977436fa07f26b2e3146f1570d2b580e1bf36ebff4bb115226cd5f7ca0e574e33264d3e08a462564fbf119ff178077
|
7
|
+
data.tar.gz: b2735c0c838f34a01955aa30883d3be24c5dae7bee94341cba025ad3d43eed67a6976db805c8a2ccb80ddeb9de4afd15f05b44fc84123aca3735375f81da3ed8
|
data/lib/timefly.rb
CHANGED
@@ -2,6 +2,18 @@ class Timefly
|
|
2
2
|
|
3
3
|
attr_accessor :origin_time
|
4
4
|
|
5
|
+
TIME_UNIT_MAPPER = {
|
6
|
+
second: { short: 's', full: 'second' },
|
7
|
+
minute: { short: 'm', full: 'minute' },
|
8
|
+
hour: { short: 'h', full: 'hour' },
|
9
|
+
day: { short: 'd', full: 'day' },
|
10
|
+
week: { short: 'w', full: 'week' },
|
11
|
+
month: { short: 'mo', full: 'month' },
|
12
|
+
year: { short: 'y', full: 'year' },
|
13
|
+
}
|
14
|
+
|
15
|
+
DEFAULT_FORMAT = '%n %U ago'
|
16
|
+
|
5
17
|
# initialize with either String, Time or Date instance
|
6
18
|
# Arguments:
|
7
19
|
# origin_time: (String/Time/Date)
|
@@ -39,21 +51,21 @@ class Timefly
|
|
39
51
|
# Example:
|
40
52
|
# >> Timefly.new(origin_time).time_elapsed
|
41
53
|
# => '4 hours ago'
|
42
|
-
def elapsed_time
|
54
|
+
def elapsed_time(options = {})
|
43
55
|
if time_elapsed_in_seconds?
|
44
|
-
elapsed_time_in_seconds
|
56
|
+
elapsed_time_in_seconds(options)
|
45
57
|
elsif time_elapsed_in_minutes?
|
46
|
-
elapsed_time_in_minutes
|
58
|
+
elapsed_time_in_minutes(options)
|
47
59
|
elsif time_elapsed_in_hours?
|
48
|
-
elapsed_time_in_hours
|
60
|
+
elapsed_time_in_hours(options)
|
49
61
|
elsif time_elapsed_in_days?
|
50
|
-
elapsed_time_in_days
|
62
|
+
elapsed_time_in_days(options)
|
51
63
|
elsif time_elapsed_in_weeks?
|
52
|
-
elapsed_time_in_weeks
|
64
|
+
elapsed_time_in_weeks(options)
|
53
65
|
elsif time_elapsed_in_months?
|
54
|
-
elapsed_time_in_months
|
66
|
+
elapsed_time_in_months(options)
|
55
67
|
else
|
56
|
-
elapsed_time_in_years
|
68
|
+
elapsed_time_in_years(options)
|
57
69
|
end
|
58
70
|
end
|
59
71
|
|
@@ -145,43 +157,54 @@ class Timefly
|
|
145
157
|
(time_diff_in_secs / (60 * 60 * 24 * 30)) < 12
|
146
158
|
end
|
147
159
|
|
148
|
-
def elapsed_time_in_seconds
|
149
|
-
|
160
|
+
def elapsed_time_in_seconds(options = {})
|
161
|
+
if options[:format].nil?
|
162
|
+
'a few seconds ago'
|
163
|
+
else
|
164
|
+
elapsed_time_in_unit(time_diff_in_secs, :second, options)
|
165
|
+
end
|
150
166
|
end
|
151
167
|
|
152
|
-
def elapsed_time_in_minutes
|
168
|
+
def elapsed_time_in_minutes(options = {})
|
153
169
|
time_diff = time_diff_in_secs / 60
|
154
|
-
elapsed_time_in_unit(time_diff,
|
170
|
+
elapsed_time_in_unit(time_diff, :minute, options)
|
155
171
|
end
|
156
172
|
|
157
|
-
def elapsed_time_in_hours
|
173
|
+
def elapsed_time_in_hours(options = {})
|
158
174
|
time_diff = time_diff_in_secs / (60 * 60)
|
159
|
-
elapsed_time_in_unit(time_diff,
|
175
|
+
elapsed_time_in_unit(time_diff, :hour, options)
|
160
176
|
end
|
161
177
|
|
162
|
-
def elapsed_time_in_days
|
178
|
+
def elapsed_time_in_days(options = {})
|
163
179
|
time_diff = time_diff_in_secs / (60 * 60 * 24)
|
164
|
-
elapsed_time_in_unit(time_diff,
|
180
|
+
elapsed_time_in_unit(time_diff, :day, options)
|
165
181
|
end
|
166
182
|
|
167
|
-
def elapsed_time_in_weeks
|
183
|
+
def elapsed_time_in_weeks(options = {})
|
168
184
|
time_diff = time_diff_in_secs / (60 * 60 * 24 * 7)
|
169
|
-
elapsed_time_in_unit(time_diff,
|
185
|
+
elapsed_time_in_unit(time_diff, :week, options)
|
170
186
|
end
|
171
187
|
|
172
|
-
def elapsed_time_in_months
|
188
|
+
def elapsed_time_in_months(options = {})
|
173
189
|
time_diff = time_diff_in_secs / (60 * 60 * 24 * 30)
|
174
|
-
elapsed_time_in_unit(time_diff,
|
190
|
+
elapsed_time_in_unit(time_diff, :month, options)
|
175
191
|
end
|
176
192
|
|
177
|
-
def elapsed_time_in_years
|
193
|
+
def elapsed_time_in_years(options = {})
|
178
194
|
time_diff = time_diff_in_secs / (60 * 60 * 24 * 30 * 12)
|
179
|
-
elapsed_time_in_unit(time_diff,
|
195
|
+
elapsed_time_in_unit(time_diff, :year, options)
|
180
196
|
end
|
181
197
|
|
182
|
-
def elapsed_time_in_unit(time_diff,
|
183
|
-
|
184
|
-
|
198
|
+
def elapsed_time_in_unit(time_diff, unit_type, options = {})
|
199
|
+
options[:format] = DEFAULT_FORMAT if options[:format].nil?
|
200
|
+
unit = ''
|
201
|
+
if options[:format].include?('%u')
|
202
|
+
unit = TIME_UNIT_MAPPER[unit_type][:short]
|
203
|
+
elsif options[:format].include?('%U')
|
204
|
+
unit = TIME_UNIT_MAPPER[unit_type][:full]
|
205
|
+
unit += 's' if time_diff > 1
|
206
|
+
end
|
207
|
+
options[:format].gsub(/\%u/i, unit).gsub(/\%n/, time_diff.to_s)
|
185
208
|
end
|
186
209
|
|
187
210
|
# END time_elapsed helper methods --------------------------------
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timefly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gaurav Singha Roy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|