module Vgrep.Ansi.Vty.Attributes
( Attr ()
, combineStyles
) where
import Data.Bits ((.|.))
import Graphics.Vty.Attributes (Attr (..), MaybeDefault (..), defAttr)
combineStyles :: Attr -> Attr -> Attr
combineStyles :: Attr -> Attr -> Attr
combineStyles Attr
l Attr
r = Attr
defAttr
{ attrStyle :: MaybeDefault Style
attrStyle = case (Attr -> MaybeDefault Style
attrStyle Attr
l, Attr -> MaybeDefault Style
attrStyle Attr
r) of
(SetTo Style
l', SetTo Style
r') -> Style -> MaybeDefault Style
forall v. (Eq v, Show v, Read v) => v -> MaybeDefault v
SetTo (Style
l' Style -> Style -> Style
forall a. Bits a => a -> a -> a
.|. Style
r')
(MaybeDefault Style
l', MaybeDefault Style
r') -> MaybeDefault Style
l' MaybeDefault Style -> MaybeDefault Style -> MaybeDefault Style
forall a. Semigroup a => a -> a -> a
<> MaybeDefault Style
r'
, attrForeColor :: MaybeDefault Color
attrForeColor = Attr -> MaybeDefault Color
attrForeColor Attr
l MaybeDefault Color -> MaybeDefault Color -> MaybeDefault Color
forall a. Semigroup a => a -> a -> a
<> Attr -> MaybeDefault Color
attrForeColor Attr
r
, attrBackColor :: MaybeDefault Color
attrBackColor = Attr -> MaybeDefault Color
attrBackColor Attr
l MaybeDefault Color -> MaybeDefault Color -> MaybeDefault Color
forall a. Semigroup a => a -> a -> a
<> Attr -> MaybeDefault Color
attrBackColor Attr
r
}