This repository has been archived on 2024-10-24. You can view files and clone it, but cannot push or open issues or pull requests.
fradrive-old/src/Data/SemVer/Instances.hs
2021-02-15 23:18:35 +01:00

32 lines
1.0 KiB
Haskell

{-# OPTIONS_GHC -fno-warn-orphans #-}
module Data.SemVer.Instances
() where
import ClassyPrelude
import qualified Data.SemVer as SemVer
import qualified Data.SemVer.Constraint as SemVer (Constraint(..))
import qualified Data.SemVer.Constraint as SemVer.Constraint
import Web.HttpApiData
instance ToHttpApiData SemVer.Version where
toUrlPiece = SemVer.toText
instance ToHttpApiData SemVer.Constraint where
toUrlPiece SemVer.CAny = "*"
toUrlPiece (SemVer.CLt v) = "<" <> toUrlPiece v
toUrlPiece (SemVer.CLtEq v) = "<=" <> toUrlPiece v
toUrlPiece (SemVer.CGt v) = ">" <> toUrlPiece v
toUrlPiece (SemVer.CGtEq v) = ">=" <> toUrlPiece v
toUrlPiece (SemVer.CEq v) = toUrlPiece v
toUrlPiece (SemVer.CAnd a b) = toUrlPiece a <> " " <> toUrlPiece b
toUrlPiece (SemVer.COr a b) = toUrlPiece a <> " || " <> toUrlPiece b
instance FromHttpApiData SemVer.Version where
parseUrlPiece = first pack . SemVer.fromText
instance FromHttpApiData SemVer.Constraint where
parseUrlPiece = first pack . SemVer.Constraint.fromText