List Helpers
groupWhile : (a -> a -> Basics.Bool) -> List a -> List (List.Nonempty.Nonempty a)
Group while a condition holds true
[ { name = "One", date = Time.second * 1 |> Date.fromTime }
, { name = "Two", date = Time.second * 2 |> Date.fromTime }
, { name = "Three", date = Time.second * 1 |> Date.fromTime }
]
|> List.sortWith (\rec1 rec2 -> Date.order rec1.date rec2.date)
|> List.groupWhile (\rec1 rec2 -> rec1.date == rec2.date)
Will result in:
[ Nonempty { name = "One", date = Time.second * 1 |> Date.fromTime } [ { name = "Three", date = Time.second * 1 |> Date.fromTime } ]
, Nonempty { name = "Two", date = Time.second * 2 |> Date.fromTime } []
]
If we didn't sort, we would be getting, :
[ Nonempty { name = "One", number = 1 } []
, Nonempty { name = "Two", number = 2 } []
, Nonempty { name = "Three", number = 1 } []
]