![require(esm) Backported to Node.js 20, Paving the Way for ESM-Only Packages](https://cdn.sanity.io/images/cgdhsj6q/production/be8ab80c8efa5907bc341c6fefe9aa20d239d890-1600x1097.png?w=400&fit=max&auto=format)
Security News
require(esm) Backported to Node.js 20, Paving the Way for ESM-Only Packages
require(esm) backported to Node.js 20, easing the transition to ESM-only packages and reducing complexity for developers as Node 18 nears end-of-life.
Provides simple (somewhat naive) Duration parsing from strings. Allows you to compare and modify durations.
Add this line to your application's Gemfile:
gem 'rduration', :require => 'duration'
And then execute:
$ bundle
Or install it yourself as:
$ gem install rduration
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 # => true
a - b # => #<Duration:2164349940 @raw="4843">
[b, a].sort # => [a, b]
b.to_clock_format # => "25:17"
If you require 'duration/string_ext' then strings gain a new method: #to_duration
"35m 5s".to_duration # => NoMethodError: undefined method `to_duration' for "35m 5s":String
require 'duration/string_ext'
"35m 5s".to_duration # => #<Duration:2151903540 @raw="35m 5s">
# once you've done this, the arithmetic and comparison stuff works too
"35m 5s".to_duration > "10m" # => true
"35m 5s".to_duration > "50m" # => false
"35m 5s".to_duration + "10m" # => #<Duration:2156162420 @raw="2705">
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
#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.git checkout -b my-new-feature
)git commit -am 'Added some feature'
)git push origin my-new-feature
)Copyright (c) 2012 Matt Wilson. See LICENSE for details, but it's MIT.
FAQs
Unknown package
We found that rduration demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
require(esm) backported to Node.js 20, easing the transition to ESM-only packages and reducing complexity for developers as Node 18 nears end-of-life.
Security News
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.