diff options
Diffstat (limited to 'common/src/Version.hs')
-rw-r--r-- | common/src/Version.hs | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/common/src/Version.hs b/common/src/Version.hs deleted file mode 100644 index 6970968..0000000 --- a/common/src/Version.hs +++ /dev/null @@ -1,47 +0,0 @@ -module Version - ( Version (..), - versionToString, - versionFromText, - versionFromString, - ) -where - -import Data.Aeson qualified as A -import Data.Aeson.Types qualified as A -import Data.Function (on) -import Data.List -import Data.List.Split -import Data.Maybe (fromMaybe) -import Data.String (IsString (..)) -import Data.Text qualified as T - -data Version = Version Int Int Int - deriving (Show, Eq) - -instance Ord Version where - compare = compare `on` toTriple - -toTriple :: Version -> (Int, Int, Int) -toTriple (Version major minor patch) = (major, minor, patch) - -instance A.ToJSON Version where - toJSON = A.toJSON . versionToString - -instance A.FromJSON Version where - parseJSON (A.String (versionFromText -> Just version)) = pure version - parseJSON v = A.typeMismatch "version" v - -versionToString :: Version -> String -versionToString (Version major minor patch) = - intercalate "." (map show [major, minor, patch]) - -versionFromString :: String -> Maybe Version -versionFromString (map read . splitOn "." -> [major, minor, patch]) = - Just (Version major minor patch) -versionFromString _ = Nothing - -versionFromText :: T.Text -> Maybe Version -versionFromText = versionFromString . T.unpack - -instance IsString Version where - fromString = fromMaybe (error "") . versionFromString |