{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
module Cmt.Parser.Config.PreDefined
( predefinedPartsP
) where
import ClassyPrelude
import Data.Attoparsec.Text
import Cmt.Parser.Attoparsec
import Cmt.Types.Config
value :: Parser Text
value = lexeme $ char '"' *> tnotChar '"' <* char '"'
partP :: Parser PreDefinedPart
partP = stripComments $ (,) <$> (pack <$> many' letter <* lexeme (char '=')) <*> value
predefinedPartsP :: Parser [PreDefinedPart]
predefinedPartsP =
stripComments $ option [] (stripComments (char '{') *> many' partP <* stripComments (char '}'))