chore: add SemVer instances

This commit is contained in:
Sarah Vaupel 2023-12-06 01:51:47 +00:00
parent 96622d3a2b
commit 5fe9665150

View File

@ -1,4 +1,4 @@
-- SPDX-FileCopyrightText: 2022 Sarah Vaupel <sarah.vaupel@ifi.lmu.de>
-- SPDX-FileCopyrightText: 2022-2023 Sarah Vaupel <sarah.vaupel@uniworx.de>, Sarah Vaupel <sarah.vaupel@ifi.lmu.de>
--
-- SPDX-License-Identifier: AGPL-3.0-or-later
@ -7,14 +7,45 @@
module Data.SemVer.Instances
() where
import ClassyPrelude
import ClassyPrelude.Yesod
import qualified Data.SemVer as SemVer
import qualified Data.SemVer.Constraint as SemVer (Constraint(..))
import qualified Data.SemVer.Constraint as SemVer.Constraint
import Data.Either.Combinators (rightToMaybe)
-- import qualified Data.Text as Text
import Model.Types.TH.PathPiece
import Web.HttpApiData
instance PathPiece SemVer.Version where
fromPathPiece = rightToMaybe . SemVer.fromText
toPathPiece = SemVer.toText
-- instance PathPiece SemVer.Constraint where
-- fromPathPiece t = case Text.unpack t of
-- "*" -> Just SemVer.CAny
-- '<' : t' -> SemVer.CLt <$> fromPathPiece t'
-- '<':'=' : t' -> SemVer.CLtEq <$> fromPathPiece t'
-- '>' : t' -> SemVer.CGt <$> fromPathPiece t'
-- '>':'=' : t' -> SemVer.CGtEq <$> fromPathPiece t'
-- _other
-- | (t',t'') <- splitAt " || " t -> SemVer.COr <$> fromPathPiece t' <*> fromPathPiece t''
-- | (t',t'') <- splitAt " " t -> SemVer.CAnd <$> fromPathPiece t' <*> fromPathPiece t''
-- | otherwise -> SemVer.CEq <$> fromPathPiece t
-- toPathPiece SemVer.CAny = "*"
-- toPathPiece (SemVer.CLt v) = "<" <> toPathPiece v
-- toPathPiece (SemVer.CLtEq v) = "<=" <> toPathPiece v
-- toPathPiece (SemVer.CGt v) = ">" <> toPathPiece v
-- toPathPiece (SemVer.CGtEq v) = ">=" <> toPathPiece v
-- toPathPiece (SemVer.CEq v) = toPathPiece v
-- toPathPiece (SemVer.CAnd a b) = toPathPiece a <> " " <> toPathPiece b
-- toPathPiece (SemVer.COr a b) = toPathPiece a <> " || " <> toPathPiece b
derivePersistFieldPathPiece ''SemVer.Version
instance ToHttpApiData SemVer.Version where
toUrlPiece = SemVer.toText