chore: add SemVer instances
This commit is contained in:
parent
96622d3a2b
commit
5fe9665150
@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user