module Types.Block where

import Distribution.PackageDescription
import Prelude.Compat
import Types.Field

type File = ([Maybe Field], [Block])

data Block = Block
    { title :: BlockHead
    , fields :: [Maybe Field]
    , subBlocks :: [Block]
    } deriving (Show)

data BlockHead
    = If (Condition ConfVar)
    | Else
    | Benchmark_ String
    | TestSuite_ String
    | Exe_ String
    | Library_ (Maybe String)
    | ForeignLib_ String
    | Flag_ String
    | SourceRepo_ RepoKind
    | CustomSetup
    deriving (Show)

isElse Else = True
isElse _ = False