packages feed

orgmode-parse-0.1.0.4: src/Data/OrgMode/Parse/Attoparsec/Document.hs

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

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

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

nonHeaderLine :: TP.Parser Text Text
nonHeaderLine = pack <$> manyTill (notChar '*') endOfLine