module Data.OrgMode.Parse.Attoparsec.Document (
 parseDocument
) where

import           Control.Applicative                    ((<$>), (<*>))
import           Data.Attoparsec.Text
import           Data.Attoparsec.Types                  as TP
import           Data.OrgMode.Parse.Attoparsec.Headings
import           Data.OrgMode.Parse.Attoparsec.Section  (nonHeaderLine)
import           Data.OrgMode.Parse.Types
import           Data.Text                              (Text, unlines)
import           Prelude                                hiding (unlines)

------------------------------------------------------------------------------
parseDocument :: [Text] -> TP.Parser Text Document
parseDocument otherKeywords =
  Document
    <$> (unlines <$> many' nonHeaderLine)
    <*> many' (headingBelowLevel otherKeywords 0)