bitwalker / bitwalker/timex

Wouldn't it be nice if Timex.compare/2 were compatible with Enum.sort?

Open
#699 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Elixir
Stars
1.8k
Forks
407
PR merge metrics
No merged PRs in 30d

Description

I would have expected to be able to sort the result of `Timex.parse!/2` by using the `Timex.compare/2` function, so I don't have to worry about whether I'm dealing with a `Date` or a `NaiveDateTime`.

```
iex> ["2020-01-06", "2020-01-05", "2019-12-31"]
|> Enum.map(& Timex.parse!(&1, "{ISOdate}"))
|> Enum.sort(Timex)

[~N[2020-01-06 00:00:00], ~N[2020-01-05 00:00:00], ~N[2019-12-31 00:00:00]] <-- not the right order 😢
```
Expected:

```
[~N[2019-12-31 00:00:00], ~N[2020-01-05 00:00:00], ~N[2020-01-06 00:00:00]]
```

Of course, this happens because `Timex.compare/2` returns `-1, 0, 1` as opposed to `:lt, :eg, :gt` as needed by [Enum.sort/2](https://hexdocs.pm/elixir/Enum.html#sort/2).

Any thoughts on this?

Thanks!

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.