{-# LANGUAGE FlexibleInstances #-}

module Language.Lsd.AST.Type.SimpleSection
    ( SimpleSectionFormat (..)
    , SimpleSectionType (..)
    )
where

import Language.Lsd.AST.Common (Keyword)
import Language.Lsd.AST.SimpleRegex (Star)
import Language.Lsd.AST.Type (NamedType)
import Language.Lsd.AST.Type.SimpleParagraph (SimpleParagraphType)

newtype SimpleSectionFormat = SimpleSectionFormat
    { SimpleSectionFormat -> Bool
ssHasPrecedingHorizontalBar :: Bool
    }
    deriving (Int -> SimpleSectionFormat -> ShowS
[SimpleSectionFormat] -> ShowS
SimpleSectionFormat -> String
(Int -> SimpleSectionFormat -> ShowS)
-> (SimpleSectionFormat -> String)
-> ([SimpleSectionFormat] -> ShowS)
-> Show SimpleSectionFormat
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SimpleSectionFormat -> ShowS
showsPrec :: Int -> SimpleSectionFormat -> ShowS
$cshow :: SimpleSectionFormat -> String
show :: SimpleSectionFormat -> String
$cshowList :: [SimpleSectionFormat] -> ShowS
showList :: [SimpleSectionFormat] -> ShowS
Show)

data SimpleSectionType
    = SimpleSectionType
        Keyword
        SimpleSectionFormat
        (Star (NamedType SimpleParagraphType))