Buzzword.Cache.Log.TimeUtil (Buzzword Cache v0.1.17)

Copy Markdown View Source

Utility functions for logging time-related information.

Summary

Functions

Converts durations ([h, min, s, ms]) and units into a formatted string.

Splits milliseconds into [hours, minutes, seconds, milliseconds].

Functions

format(durations, options \\ [])

@spec format([non_neg_integer()], keyword()) :: String.t()

Converts durations ([h, min, s, ms]) and units into a formatted string.

Options

  • :units - list of strings to use as units. Defaults to [" h", " min", " s", " ms"].

  • :show_zeroes - whether to show zero values. Defaults to false.

  • :two_digits - whether to pad single-digit values with a leading zero. Defaults to false.

Examples

iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.format([1, 1, 6, 1])
"1 h 1 min 6 s 1 ms"

iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.format([1, 1, 6, 1], units: [:hr, :min, :sec])
"1hr 1min 6sec"

iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.format([1, 1, 6, 1], units: [" hour(s)", " minute(s)"])
"1 hour(s) 1 minute(s)"

iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.format([1, 1, 6, 1], units: [" H", " MIN", " S"])
"1 H 1 MIN 6 S"

iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.format([1, 1, 6, 1], units: ["H", "MIN", "S", "MS"])
"1H 1MIN 6S 1MS"

iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.format([1, 1, 0, 1])
"1 h 1 min 1 ms"

iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.format([1, 1, 0, 1], show_zeroes: true)
"1 h 1 min 0 s 1 ms"

iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.format([1, 1, 0, 1], show_zeroes: true, two_digits: true)
"01 h 01 min 00 s 01 ms"

iex> alias Buzzword.Cache.Log.TimeUtil
iex> options = [show_zeroes: true, two_digits: true]
iex> TimeUtil.format([1234, 1, 0, 199], options)
"1234 h 01 min 00 s 199 ms"

iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.format([1, 1, 0, 1], two_digits: true)
"01 h 01 min 01 ms"

split(ms)

@spec split(non_neg_integer()) :: [non_neg_integer()]

Splits milliseconds into [hours, minutes, seconds, milliseconds].

Examples

iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.split(3_666_001)
[1, 1, 6, 1]

iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.split(3_660_001)
[1, 1, 0, 1]

iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.split(3_606_001)
[1, 0, 6, 1]