timerizer 0.0.1 → 0.0.2
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/lib/timerizer.rb +62 -0
- metadata +3 -3
data/lib/timerizer.rb
CHANGED
@@ -259,8 +259,12 @@ class RelativeTime
|
|
259
259
|
end.reverse.join(', ')
|
260
260
|
end
|
261
261
|
end
|
262
|
+
|
262
263
|
# {Time} class monkeywrenched with {RelativeTime} support.
|
263
264
|
class Time
|
265
|
+
class TimeIsInThePastException < Exception; end
|
266
|
+
class TimeIsInTheFutureException < Exception; end
|
267
|
+
|
264
268
|
add = instance_method(:+)
|
265
269
|
define_method(:+) do |time|
|
266
270
|
if(time.class == RelativeTime)
|
@@ -279,6 +283,52 @@ class Time
|
|
279
283
|
end
|
280
284
|
end
|
281
285
|
|
286
|
+
# Calculates the time until a given time
|
287
|
+
# @param [Time] time The time until now to calculate
|
288
|
+
# @return [RelativeTime] The time until the provided time
|
289
|
+
# @raise[TimeIsInThePastException] The provided time is in the past
|
290
|
+
# @example
|
291
|
+
# Time.until(Time.new(2012, 12, 25))
|
292
|
+
# => 13 weeks, 2 days, 6 hours, 31 minutes, 39 seconds
|
293
|
+
# @see Time#since
|
294
|
+
# @see Time#between
|
295
|
+
def self.until(time)
|
296
|
+
raise TimeIsInThePastException if Time.now > time
|
297
|
+
|
298
|
+
Time.between(Time.now, time)
|
299
|
+
end
|
300
|
+
|
301
|
+
# Calculates the time since a given time
|
302
|
+
# @param [Time] since The time to calculate since now
|
303
|
+
# @return [RelativeTime] The time since the provided time
|
304
|
+
# @raise[TimeIsInTheFutureException] The provided time is in the future
|
305
|
+
# @example
|
306
|
+
# Time.since(Time.new(2011, 10, 31))
|
307
|
+
# => 46 weeks, 5 days, 18 hours, 26 minutes, 10 seconds
|
308
|
+
# @see Time#since
|
309
|
+
# @see Time#between
|
310
|
+
def self.since(time)
|
311
|
+
raise TimeIsInTheFutureException if time > Time.now
|
312
|
+
|
313
|
+
Time.between(Time.now, time)
|
314
|
+
end
|
315
|
+
|
316
|
+
# Calculate the amount of time between two times.
|
317
|
+
# @param [Time] time1 The initial time
|
318
|
+
# @param [Time] time2 The final time
|
319
|
+
# @return [RelativeTime] Calculated time between time1 and time2
|
320
|
+
# @example
|
321
|
+
# Time.between(1.minute.ago, 1.hour.ago)
|
322
|
+
# => 59.minutes
|
323
|
+
# @note The two times are interchangable; which comes first doesn't matter
|
324
|
+
# @see Time#until
|
325
|
+
# @see Time#since
|
326
|
+
def self.between(time1, time2)
|
327
|
+
time_between = (time2 - time1).abs
|
328
|
+
|
329
|
+
RelativeTime.new(time_between.round)
|
330
|
+
end
|
331
|
+
|
282
332
|
# Convert {Time} to {Date}.
|
283
333
|
# @return [Date] {Time} as {Date}
|
284
334
|
# @example
|
@@ -317,6 +367,18 @@ class Date
|
|
317
367
|
def to_date
|
318
368
|
self
|
319
369
|
end
|
370
|
+
|
371
|
+
# Return tomorrow as {Date}.
|
372
|
+
# @see Date#yesterday
|
373
|
+
def self.tomorrow
|
374
|
+
1.day.from_now.to_date
|
375
|
+
end
|
376
|
+
|
377
|
+
# Return yesterday as {Date}.
|
378
|
+
# @see Date#tomorrow
|
379
|
+
def self.yesterday
|
380
|
+
1.day.ago.to_date
|
381
|
+
end
|
320
382
|
end
|
321
383
|
|
322
384
|
# Monkeywrenched {Fixnum} class enabled to return {RelativeTime} objects.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timerizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-09-22 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: A simple set of Rails-like time helpers
|
15
15
|
email: kylelacy@me.com
|
@@ -38,7 +38,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
38
38
|
version: '0'
|
39
39
|
requirements: []
|
40
40
|
rubyforge_project:
|
41
|
-
rubygems_version: 1.8.
|
41
|
+
rubygems_version: 1.8.23
|
42
42
|
signing_key:
|
43
43
|
specification_version: 3
|
44
44
|
summary: Rails time helpers... without the Rails
|