Method: TimeCalc::Diff#factorize
- Defined in:
- lib/time_calc/diff.rb
#factorize(zeroes: true, max: :year, min: :sec, weeks: true) ⇒ Hash<Symbol => Integer>
“Factorizes” the distance between two points in time into units: years, months, weeks, days.
160 161 162 163 164 165 166 167 168 169 170 171 172 |
# File 'lib/time_calc/diff.rb', line 160 def factorize(zeroes: true, max: :year, min: :sec, weeks: true) t = to f = from select_units(max: Units.(max), min: Units.(min), weeks: weeks) .inject({}) { |res, unit| span, t = Diff.new(f, t).divmod(unit) res.merge(unit => span) }.then { |res| next res if zeroes res.drop_while { |_, v| v.zero? }.to_h } end |