A few things that annoy me with the opinionated formatter (when the line_length is exceeded) are
<<0,1,2,3,..>> Binary gets expanded to
<<
0,
1,
2,
3,
..
>>
Extra indent
values = [{0, "a"}, {1, "c"}, {2, "e"}]
value = values
|> Enum.find_value(fn{key, letter}-> key == 1 && letter end)
|> String.upcase()
|> Base.encode64()
# Formatted
value =
values
|> Enum.find_value(fn {key, letter} -> key == 1 && letter end)
|> String.upcase()
|> Base.encode64()
I feel without the extra indent its clearer to read if the function has more scopes.
and / or get placed at end of line
Enum.filter(values, fn{k,v}->
k == 5
and k != 7
and v != "a"
end)
Enum.filter(values, fn {k, v} ->
k == 5 and
k != 7 and
v != "a"
end)
Reading from left to right makes it take longer to comprehend. If you read right to left its natural tho.
If line gets expanded in a cond
Enum.filter(values, fn {k, v} ->
cond do
k == 5 and k == 5 and k == 5 and k == 5 and k == 5 and k == 5 and k == 5 and k == 5 -> false
k != 7 -> false
v != "a" -> false
true -> true
end
end)
Enum.filter(values, fn {k, v} ->
cond do
k == 5 and k == 5 and k == 5 and k == 5 and k == 5 and k == 5 and k == 5 and k == 5 ->
false
k != 7 ->
false
v != "a" ->
false
true ->
true
end
end)
Extra spaces even tho the lines are short, the results are placed on seperate lines.
Does anyone have any idea how to slightly tune the formatter? I know its meant to be opinionated and the official answer will be, if you dont like it dont use it.