@@ -245,7 +245,7 @@ versionToText (Version major minor patch) =
245245 <> B.decimal patch
246246
247247
248−versionFromText :: Text -> Either String Version
248+versionFromText :: Text -> Maybe Version
249249versionFromText text =
250250 case Text.splitOn "." text of
251251 [major, minor, patch] ->
@@ -255,17 +255,17 @@ versionFromText text =
255255 <*> toNumber patch
256256
257257 _ ->
258− Left "Must have format MAJOR.MINOR.PATCH (e.g. 1.0.2)"
258+ Nothing
259259
260260
261−toNumber :: Text -> Either String Word16
261+toNumber :: Text -> Maybe Word16
262262toNumber txt =
263263 case Text.decimal txt of
264264 Right (n, "") ->
265− Right n
265+ Just n
266266
267267 _ ->
268− Left "Must have format MAJOR.MINOR.PATCH (e.g. 1.0.2)"
268+ Nothing
269269
270270
271271
@@ -320,11 +320,12 @@ decoder :: Decode.Decoder String Name
320320decoder =
321321 do txt <- Decode.text
322322 case fromText txt of
323+ Right name ->
324+ Decode.succeed name
325+
323326 Left msg ->
324327 Decode.fail msg
325328
326− Right name ->
327− Decode.succeed name
328329
329330
330331encode :: Name -> Encode.Value
@@ -333,15 +334,15 @@ encode name =
333334
334335
335336
336−versionDecoder :: Decode.Decoder String Version
337+versionDecoder :: Decode.Decoder Text Version
337338versionDecoder =
338339 do txt <- Decode.text
339340 case versionFromText txt of
340− Right version ->
341+ Just version ->
341342 Decode.succeed version
342343
343− Left msg ->
344− Decode.fail msg
344+ Nothing ->
345+ Decode.fail txt
345346
346347
347348encodeVersion :: Version -> Encode.Value