Skip to content

Commit c355ab6

Browse files
committed
Fix to_string for Version with numeric pre
Signed-off-by: Eric Meadows-Jönsson <[email protected]>
1 parent f0ed2d4 commit c355ab6

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

lib/elixir/lib/version.ex

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -519,10 +519,21 @@ end
519519

520520
defimpl String.Chars, for: Version do
521521
def to_string(version) do
522-
pre = unless Enum.empty?(pre = version.pre), do: "-#{pre}"
522+
pre = pre(version.pre)
523523
build = if build = version.build, do: "+#{build}"
524524
"#{version.major}.#{version.minor}.#{version.patch}#{pre}#{build}"
525525
end
526+
527+
defp pre([]) do
528+
""
529+
end
530+
531+
defp pre(pre) do
532+
Enum.map(["-"] ++ pre, fn
533+
int when is_integer(int) -> Integer.to_string(int)
534+
string when is_binary(string) -> string
535+
end)
536+
end
526537
end
527538

528539
defimpl Inspect, for: Version do

lib/elixir/test/elixir/version_test.exs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ defmodule VersionTest do
7272
assert V.parse("1.0.0-dev") |> elem(1) |> to_string == "1.0.0-dev"
7373
assert V.parse("1.0.0+lol") |> elem(1) |> to_string == "1.0.0+lol"
7474
assert V.parse("1.0.0-dev+lol") |> elem(1) |> to_string == "1.0.0-dev+lol"
75+
assert V.parse("1.0.0-0") |> elem(1) |> to_string == "1.0.0-0"
7576
end
7677

7778
test "invalid match" do

0 commit comments

Comments
 (0)