@@ -238,9 +238,10 @@ defmodule Version do
238
238
@ spec parse ( String . t ) :: { :ok , t } | :error
239
239
def parse ( string ) when is_binary ( string ) do
240
240
case Version.Parser . parse_version ( string ) do
241
- { :ok , { major , minor , patch , pre } } ->
241
+ { :ok , { major , minor , patch , pre , build_parts } } ->
242
+ build = if build_parts == [ ] , do: nil , else: Enum . join ( build_parts , "" )
242
243
version = % Version { major: major , minor: minor , patch: patch ,
243
- pre: pre , build: get_build ( string ) }
244
+ pre: pre , build: build }
244
245
{ :ok , version }
245
246
:error ->
246
247
:error
@@ -312,23 +313,13 @@ defmodule Version do
312
313
313
314
defp to_matchable ( string , allow_pre? ) do
314
315
case Version.Parser . parse_version ( string ) do
315
- { :ok , { major , minor , patch , pre } } ->
316
+ { :ok , { major , minor , patch , pre , _build_parts } } ->
316
317
{ major , minor , patch , pre , allow_pre? }
317
318
:error ->
318
319
raise InvalidVersionError , message: string
319
320
end
320
321
end
321
322
322
- defp get_build ( string ) do
323
- case Regex . run ( ~r/ \+ ([^\s ]+)$/ , string ) do
324
- nil ->
325
- nil
326
-
327
- [ _ , build ] ->
328
- build
329
- end
330
- end
331
-
332
323
defmodule Parser.DSL do
333
324
@ moduledoc false
334
325
@@ -413,8 +404,8 @@ defmodule Version do
413
404
{ :ok , patch } <- maybe_patch ( patch , approximate? ) ,
414
405
{ :ok , pre_parts } <- optional_dot_separated ( pre ) ,
415
406
{ :ok , pre_parts } <- convert_parts_to_integer ( pre_parts , [ ] ) ,
416
- { :ok , _build_parts } <- optional_dot_separated ( build ) do
417
- { :ok , { major , minor , patch , pre_parts } }
407
+ { :ok , build_parts } <- optional_dot_separated ( build ) do
408
+ { :ok , { major , minor , patch , pre_parts , build_parts } }
418
409
else
419
410
_other -> :error
420
411
end
@@ -599,7 +590,7 @@ defmodule Version do
599
590
600
591
defp parse_condition ( version , approximate? \\ false ) do
601
592
case parse_version ( version , approximate? ) do
602
- { :ok , version } -> version
593
+ { :ok , { major , minor , patch , pre , _build } } -> { major , minor , patch , pre }
603
594
:error -> throw :invalid_matchspec
604
595
end
605
596
end
0 commit comments