module Text.Layout.Table.Primitives.AlignInfo where
import Data.Foldable (asum)
data AlignInfo = AlignInfo Int (Maybe Int)
showAI :: AlignInfo -> String
showAI (AlignInfo l optR) = "AlignInfo " ++ show l ++ " " ++ showsPrec 11 optR ""
widthAI :: AlignInfo -> Int
widthAI (AlignInfo l optR) = l + maybe 0 succ optR
instance Semigroup AlignInfo where
AlignInfo ll lOptR <> AlignInfo rl rOptR =
AlignInfo (max ll rl) (asum [max <$> lOptR <*> rOptR, lOptR, rOptR])
instance Monoid AlignInfo where
mempty = AlignInfo 0 Nothing