defmodule HlsPlaylist.Segments do def generate(duration, segment_length \\ 3) when duration > 0 and segment_length > 0 do spread_duration(duration, segment_length, []) end defp spread_duration(duration, _segment_length, acc) when duration <= 0 do Enum.map(acc, fn x -> Float.round((x * 1.0), 2) end) |> Enum.reverse() end defp spread_duration(duration, segment_length, acc) do next_duration = min(duration, segment_length) spread_duration(duration - next_duration, segment_length, [next_duration | acc]) end end