module Text.Show.Text.Data.Version (
showbVersionPrec
, showbVersionConcrete
) where
import Data.List (intersperse)
import Data.Monoid (mconcat)
import Data.Text.Lazy.Builder (Builder, fromString)
import Data.Version (Version(..))
import GHC.Show (appPrec)
import Prelude hiding (Show)
import Text.Show.Text.Class (Show(showb, showbPrec), showbParen)
import Text.Show.Text.Data.Char ()
import Text.Show.Text.Data.Integral ()
import Text.Show.Text.Data.List ()
import Text.Show.Text.Utils ((<>), s)
showbVersionPrec :: Int -> Version -> Builder
showbVersionPrec p (Version b t) = showbParen (p > appPrec) $
"Version {versionBranch = "
<> showb b
<> ", versionTags = "
<> showb t
<> s '}'
showbVersionConcrete :: Version -> Builder
showbVersionConcrete (Version branch tags)
= mconcat (intersperse (s '.') $ map showb branch) <>
mconcat (map ((s '-' <>) . fromString) tags)
instance Show Version where
showbPrec = showbVersionPrec