pollock-0.1.0.0: src/Pollock/Documentation/Metadata.hs
{- |
Module: Pollock.Documentation.Metadata
Copyright: (c) Trevis Elser 2023
License: MIT
Maintainer: trevis@flipstone.com
Stability: experimental
Portability: portable
-}
module Pollock.Documentation.Metadata
( Metadata (..)
, emptyMetadata
, metaAppend
, metadataHasSinceVersion
) where
import Control.Applicative ((<|>))
newtype Metadata = Metadata
{ version :: Maybe SinceVersion
}
emptyMetadata :: Metadata
emptyMetadata =
Metadata
{ version = Nothing
}
-- | This is not a monoidal append, it uses '<|>' for the 'version'.
metaAppend :: Metadata -> Metadata -> Metadata
metaAppend (Metadata v1) (Metadata v2) = Metadata (v1 <|> v2)
metadataHasSinceVersion :: Metadata -> Bool
metadataHasSinceVersion (Metadata Nothing) = False
metadataHasSinceVersion (Metadata (Just vs)) = not $ null vs
type SinceVersion = [Int]