module Text.Layout.Table.Primitives.Header where

import Data.Maybe

import Text.Layout.Table.Cell
import Text.Layout.Table.StringBuilder
import Text.Layout.Table.Primitives.ColumnModifier
import Text.Layout.Table.Spec.CutMark
import Text.Layout.Table.Spec.HeaderColSpec

-- | Combine a 'HeaderColSpec' and existing 'ColModInfo's to format header cells.
headerCellModifier :: (Cell a, StringBuilder b) => HeaderColSpec -> CutMark -> ColModInfo -> (a -> b)
headerCellModifier :: forall a b.
(Cell a, StringBuilder b) =>
HeaderColSpec -> CutMark -> ColModInfo -> a -> b
headerCellModifier (HeaderColSpec Position H
pos Maybe CutMark
optCutMark) CutMark
cutMark ColModInfo
cmi =
    Position H -> CutMark -> ColModInfo -> a -> b
forall a b.
(Cell a, StringBuilder b) =>
Position H -> CutMark -> ColModInfo -> a -> b
columnModifier Position H
pos (CutMark -> Maybe CutMark -> CutMark
forall a. a -> Maybe a -> a
fromMaybe CutMark
cutMark Maybe CutMark
optCutMark) (ColModInfo -> ColModInfo
unalignedCMI ColModInfo
cmi)