Duration
Provides simple (somewhat naive) Duration parsing from strings. Allows you to compare and modify durations.
Installation
Add this line to your application's Gemfile:
gem 'rduration', :require => 'duration'
And then execute:
$ bundle
Or install it yourself as:
$ gem install rduration
Usage
duration_spec.rb
has more details about the types of strings this can handle, but here's brief overview:
a = Duration.new("01:46:00")
b = Duration.new("25 minutes 17 seconds")
a > b
a - b
[b, a].sort
b.to_clock_format
If you require 'duration/string_ext' then strings gain a new method: #to_duration
"35m 5s".to_duration
require 'duration/string_ext'
"35m 5s".to_duration
"35m 5s".to_duration > "10m"
"35m 5s".to_duration > "50m"
"35m 5s".to_duration + "10m"
Formats
Here's a list of formats that will parse:
Duration
#parse
parses "0" as 0 seconds
parses "00:00" as 0 seconds
parses "0 seconds" as 0 seconds
parses nil as 0 seconds
parses "45s" as 45 seconds
parses "45 seconds" as 45 seconds
parses "00:00:45" as 45 seconds
parses "45" as 45 seconds
parses "137s" as 137 seconds
parses "2m17s" as 137 seconds
parses "2 minutes 17 seconds" as 137 seconds
parses "02:17" as 137 seconds
parses "2:17" as 137 seconds
parses "1h32m07s" as 5527 seconds
parses "1:32:07" as 5527 seconds
parses "92 minutes and 7 seconds" as 5527 seconds
parses "3d10h15m" as 296100 seconds
parses "3:10:15:00" as 296100 seconds
parses "82 hours 15 minutes" as 296100 seconds
Interesting Methods
#to_clock_format
leverages #to_s
's newfound proc handling powers to format the output. Speaking of...#to_s
takes a proc, and yields the duration in seconds to it. This is useful for output.
CHANGELOG
- v0.0.2 Speling And Hashify
- Corrected spelling (thanks @czarneckiD) and killed an extraneous method.
- v0.0.1 Hello World
- Handles all of my use cases. Could be better at everything, though :).
Contributors (Thanks!)
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Added some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
Copyright
Copyright (c) 2012 Matt Wilson. See LICENSE for details, but it's MIT.