timerizer 0.3.0 → 0.3.1
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 +5 -5
- data/lib/timerizer/duration.rb +81 -0
- data/lib/timerizer/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e03bc2d5660e629ad3545c610bf09efa55fbe07cec5c364970eabb8001add9fd
|
4
|
+
data.tar.gz: 050b2b058e5c63eda87f973e5adde7c84e34c9c230833c47f84eb7189ef0d774
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bcc860c64450e0e1f099dca114205f727410a216846c25a61ce75b5052783e95a7b748df72227b9b1b108d44ca0eb11f4dbb81ac7ddcf715629f3a4d9e3135a1
|
7
|
+
data.tar.gz: a9836b0cb9c429a8ed66fad757cea99f022934af83e7b5757f8bd84fdf805fe102624d6e14b41d6e9711cbb10dbb53fbd315798b86633de18edfb1e560d2b6ed
|
data/lib/timerizer/duration.rb
CHANGED
@@ -135,6 +135,17 @@ module Timerizer
|
|
135
135
|
months: ['month', 'months'],
|
136
136
|
years: ['year', 'years']
|
137
137
|
}
|
138
|
+
},
|
139
|
+
min_long: {
|
140
|
+
units: {
|
141
|
+
seconds: ['second', 'seconds'],
|
142
|
+
minutes: ['minute', 'minutes'],
|
143
|
+
hours: ['hour', 'hours'],
|
144
|
+
days: ['day', 'days'],
|
145
|
+
months: ['month', 'months'],
|
146
|
+
years: ['year', 'years']
|
147
|
+
},
|
148
|
+
count: 2
|
138
149
|
}
|
139
150
|
}
|
140
151
|
|
@@ -642,6 +653,74 @@ module Timerizer
|
|
642
653
|
end.join(format[:delimiter] || ', ')
|
643
654
|
end
|
644
655
|
|
656
|
+
# Convert a Duration to a human-readable string using a rounded value.
|
657
|
+
#
|
658
|
+
# By 'rounded', we mean that the resulting value is rounded up if the input
|
659
|
+
# includes a value of more than half of one of the least-significant unit to
|
660
|
+
# be returned. For example, `(17.hours 43.minutes 31.seconds)`, when rounded
|
661
|
+
# to two units (hours and minutes), would return "17 hours, 44 minutes". By
|
662
|
+
# contrast, `#to_s`, with a `:count` option of 2, would return a value of
|
663
|
+
# "17 hours, 43 minutes": truncating, rather than rounding.
|
664
|
+
#
|
665
|
+
# Note that this method overloads the meaning of the `:count` option value
|
666
|
+
# as documented below. If the passed-in option value is numeric, it will be
|
667
|
+
# honored, and rounding will take place to that number of units. If the
|
668
|
+
# value is either `:all` or the default `nil`, then _rounding_ will be done
|
669
|
+
# to two units, and the rounded value will be passed on to `#to_s` with the
|
670
|
+
# options specified (which will result in a maximum of two time units being
|
671
|
+
# output).
|
672
|
+
#
|
673
|
+
# @param [Symbol, Hash] format The format type to format the duration with.
|
674
|
+
# `format` can either be a key from the {FORMATS} hash or a hash with
|
675
|
+
# the same shape as `options`. The default is `:min_long`, which strongly
|
676
|
+
# resembles `:long` with the omission of `:weeks` units and a default
|
677
|
+
# `:count` of 2.
|
678
|
+
# @param [Hash, nil] options Additional options to use to override default
|
679
|
+
# format options.
|
680
|
+
#
|
681
|
+
# @option options [Hash<Symbol, String>] :units The full list of unit names
|
682
|
+
# to use. Keys are unit names (see {UNIT_ALIASES} for a full list) and
|
683
|
+
# values are strings to use when converting that unit to a string. Values
|
684
|
+
# can also be an array, where the first item of the array will be used
|
685
|
+
# for singular unit names and the second item will be used for plural
|
686
|
+
# unit names. Note that this option will completely override the input
|
687
|
+
# formats' list of names, so all units that should be used must be
|
688
|
+
# specified!
|
689
|
+
# @option options [String] :separator The separator to use between a unit
|
690
|
+
# quantity and the unit's name. For example, the string `"1 second"` uses
|
691
|
+
# a separator of `" "`.
|
692
|
+
# @option options [String] :delimiter The delimiter to use between separate
|
693
|
+
# units. For example, the string `"1 minute, 1 second"` uses a separator
|
694
|
+
# of `", "`
|
695
|
+
# @option options [Integer, nil, :all] :count The number of significant
|
696
|
+
# units to use in the string, or `nil` / `:all` to use all units.
|
697
|
+
# For example, if the given duration is `1.day 1.week 1.month`, and
|
698
|
+
# `options[:count]` is 2, then the resulting string will only include
|
699
|
+
# the month and the week components of the string.
|
700
|
+
#
|
701
|
+
# @return [String] The rounded duration formatted as a string.
|
702
|
+
def to_rounded_s(format = :min_long, options = nil)
|
703
|
+
format =
|
704
|
+
case format
|
705
|
+
when Symbol
|
706
|
+
FORMATS.fetch(format)
|
707
|
+
when Hash
|
708
|
+
FORMATS.fetch(:long).merge(format)
|
709
|
+
else
|
710
|
+
raise ArgumentError, "Expected #{format.inspect} to be a Symbol or Hash"
|
711
|
+
end
|
712
|
+
|
713
|
+
format = format.merge(Hash(options))
|
714
|
+
places = format[:count]
|
715
|
+
begin
|
716
|
+
places = Integer(places) # raise if nil or `:all` supplied as value
|
717
|
+
rescue TypeError
|
718
|
+
places = 2
|
719
|
+
end
|
720
|
+
q = RoundedTime.call(self, places)
|
721
|
+
q.to_s(format, options)
|
722
|
+
end
|
723
|
+
|
645
724
|
private
|
646
725
|
|
647
726
|
# This method is like {#to_unit}, except it does not perform normalization
|
@@ -764,3 +843,5 @@ module Timerizer
|
|
764
843
|
self.define_to_unit(:millennium)
|
765
844
|
end
|
766
845
|
end
|
846
|
+
|
847
|
+
require_relative './duration/rounded_time'
|
data/lib/timerizer/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timerizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kyle Lacy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-12-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -98,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
98
98
|
version: '0'
|
99
99
|
requirements: []
|
100
100
|
rubyforge_project:
|
101
|
-
rubygems_version: 2.
|
101
|
+
rubygems_version: 2.7.7
|
102
102
|
signing_key:
|
103
103
|
specification_version: 4
|
104
104
|
summary: Rails time helpers... without the Rails
|