on master help sign in
Switch versionFromText to produce Maybe
780b9a3Evan Czaplicki
src/Elm/Package.hs+12−11
@@ -245,7 +245,7 @@ versionToText (Version major minor patch) =
245 <> B.decimal patch
245 <> B.decimal patch
246
246
247
247
248−versionFromText :: Text -> Either String Version
248+versionFromText :: Text -> Maybe Version
249versionFromText text =
249versionFromText text =
250 case Text.splitOn "." text of
250 case Text.splitOn "." text of
251 [major, minor, patch] ->
251 [major, minor, patch] ->
@@ -255,17 +255,17 @@ versionFromText text =
255 <*> toNumber patch
255 <*> toNumber patch
256
256
257 _ ->
257 _ ->
258− Left "Must have format MAJOR.MINOR.PATCH (e.g. 1.0.2)"
258+ Nothing
259
259
260
260
261−toNumber :: Text -> Either String Word16
261+toNumber :: Text -> Maybe Word16
262toNumber txt =
262toNumber txt =
263 case Text.decimal txt of
263 case Text.decimal txt of
264 Right (n, "") ->
264 Right (n, "") ->
265− Right n
265+ Just n
266
266
267 _ ->
267 _ ->
268− Left "Must have format MAJOR.MINOR.PATCH (e.g. 1.0.2)"
268+ Nothing
269
269
270
270
271
271
@@ -320,11 +320,12 @@ decoder :: Decode.Decoder String Name
320decoder =
320decoder =
321 do txt <- Decode.text
321 do txt <- Decode.text
322 case fromText txt of
322 case fromText txt of
323+ Right name ->
324+ Decode.succeed name
325+
323 Left msg ->
326 Left msg ->
324 Decode.fail msg
327 Decode.fail msg
325
328
326− Right name ->
327− Decode.succeed name
328
329
329
330
330encode :: Name -> Encode.Value
331encode :: Name -> Encode.Value
@@ -333,15 +334,15 @@ encode name =
333
334
334
335
335
336
336−versionDecoder :: Decode.Decoder String Version
337+versionDecoder :: Decode.Decoder Text Version
337versionDecoder =
338versionDecoder =
338 do txt <- Decode.text
339 do txt <- Decode.text
339 case versionFromText txt of
340 case versionFromText txt of
340− Right version ->
341+ Just version ->
341 Decode.succeed version
342 Decode.succeed version
342
343
343− Left msg ->
344+ Nothing ->
344− Decode.fail msg
345+ Decode.fail txt
345
346
346
347
347encodeVersion :: Version -> Encode.Value
348encodeVersion :: Version -> Encode.Value