module Hix.Managed.Data.Lower where

import Distribution.Pretty (Pretty (pretty))

import Hix.Data.Version (Major, prettyMajors)

data Lower =
  Lower {
    Lower -> NonEmpty Major
majors :: NonEmpty Major
  }
  deriving stock (Lower -> Lower -> Bool
(Lower -> Lower -> Bool) -> (Lower -> Lower -> Bool) -> Eq Lower
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Lower -> Lower -> Bool
== :: Lower -> Lower -> Bool
$c/= :: Lower -> Lower -> Bool
/= :: Lower -> Lower -> Bool
Eq, Int -> Lower -> ShowS
[Lower] -> ShowS
Lower -> String
(Int -> Lower -> ShowS)
-> (Lower -> String) -> ([Lower] -> ShowS) -> Show Lower
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Lower -> ShowS
showsPrec :: Int -> Lower -> ShowS
$cshow :: Lower -> String
show :: Lower -> String
$cshowList :: [Lower] -> ShowS
showList :: [Lower] -> ShowS
Show, (forall x. Lower -> Rep Lower x)
-> (forall x. Rep Lower x -> Lower) -> Generic Lower
forall x. Rep Lower x -> Lower
forall x. Lower -> Rep Lower x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Lower -> Rep Lower x
from :: forall x. Lower -> Rep Lower x
$cto :: forall x. Rep Lower x -> Lower
to :: forall x. Rep Lower x -> Lower
Generic)

instance Pretty Lower where
  pretty :: Lower -> Doc
pretty Lower {NonEmpty Major
$sel:majors:Lower :: Lower -> NonEmpty Major
majors :: NonEmpty Major
majors} = NonEmpty Major -> Doc
prettyMajors NonEmpty Major
majors