module Text.Layout.Table.Spec.ColSpec
    ( ColSpec
    , lenSpec
    , position
    , alignSpec
    , cutMark
    , column
    ) where

import Data.Default.Class

import Text.Layout.Table.Primitives.Basic ()
import Text.Layout.Table.Spec.CutMark
import Text.Layout.Table.Spec.AlignSpec
import Text.Layout.Table.Spec.LenSpec
import Text.Layout.Table.Spec.Position


-- | Specifies the layout of a column.
data ColSpec
    = ColSpec
    { ColSpec -> LenSpec
lenSpec     :: LenSpec
    , ColSpec -> Position H
position    :: Position H
    , ColSpec -> AlignSpec
alignSpec   :: AlignSpec
    , ColSpec -> CutMark
cutMark     :: CutMark
    }

instance Default ColSpec where
    def :: ColSpec
def = LenSpec -> Position H -> AlignSpec -> CutMark -> ColSpec
column LenSpec
forall a. Default a => a
def Position H
forall a. Default a => a
def AlignSpec
forall a. Default a => a
def CutMark
forall a. Default a => a
def

-- | Smart constructor to specify a column.
column :: LenSpec -> Position H -> AlignSpec -> CutMark -> ColSpec
column :: LenSpec -> Position H -> AlignSpec -> CutMark -> ColSpec
column = LenSpec -> Position H -> AlignSpec -> CutMark -> ColSpec
ColSpec