Skip to content

Commit 45ac810

Browse files
authored
Add parse() and tryparse() for VersionNumbers (#36900)
1 parent 8a66560 commit 45ac810

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

base/version.jl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,18 @@ function VersionNumber(v::AbstractString)
121121
return VersionNumber(major, minor, patch, prerl, build)
122122
end
123123

124+
parse(::Type{VersionNumber}, v::AbstractString) = VersionNumber(v)
125+
function tryparse(::Type{VersionNumber}, v::AbstractString)
126+
try
127+
return VersionNumber(v)
128+
catch e
129+
if isa(e, InterruptException)
130+
rethrow(e)
131+
end
132+
return nothing
133+
end
134+
end
135+
124136
"""
125137
@v_str
126138

test/version.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,12 @@ using Random
7979

8080
@test_throws ArgumentError VersionNumber(4, 3, 2, (), ("", 1))
8181

82+
# parse()/tryparse()
83+
@test parse(VersionNumber, "1.2.3") == v"1.2.3"
84+
@test_throws ArgumentError parse(VersionNumber, "not a version")
85+
@test tryparse(VersionNumber, "3.2.1") == v"3.2.1"
86+
@test tryparse(VersionNumber, "not a version") === nothing
87+
8288
# show
8389
io = IOBuffer()
8490
show(io,v"4.3.2+1.a")
@@ -227,3 +233,4 @@ io = IOBuffer()
227233
@test VersionNumber(true, 0x2, Int128(3), (GenericString("rc"), 0x1)) == v"1.2.3-rc.1"
228234
@test VersionNumber(true, 0x2, Int128(3), (GenericString("rc"), 0x1)) == v"1.2.3-rc.1"
229235
@test VersionNumber(true, 0x2, Int128(3), (), (GenericString("sp"), 0x2)) == v"1.2.3+sp.2"
236+

0 commit comments

Comments
 (0)