----------------------------------------------------------------------------- -- | -- Module : Data.OrgMode.Parse.Attoparsec.Drawer.Logbook -- Copyright : © 2017 Parnell Springmeyer -- License : All Rights Reserved -- Maintainer : Parnell Springmeyer <parnell@digitalmentat.com> -- Stability : stable -- -- Parsing combinators for org-mode section logbook drawers. ---------------------------------------------------------------------------- {-# LANGUAGE OverloadedStrings #-} module Data.OrgMode.Parse.Attoparsec.Drawer.Logbook ( parseLogbook ) where import Control.Applicative ((*>)) import Data.Attoparsec.Text import Data.Attoparsec.Types as Attoparsec import Data.Text (Text) import Prelude hiding (concat, null, takeWhile) import Data.OrgMode.Parse.Attoparsec.Drawer.Generic as Drawer.Generic import Data.OrgMode.Parse.Attoparsec.Time (parseClock) import Data.OrgMode.Types -- | Parse a @LOGBOOK@ drawer. -- -- > :LOGBOOK: -- > CLOCK: [2015-10-05 Mon 17:13]--[2015-10-05 Mon 17:14] => 0:01 -- > :END: parseLogbook :: Attoparsec.Parser Text Logbook parseLogbook = Logbook <$> (drawerBegin *> manyTill parseClock Drawer.Generic.drawerEnd) where drawerBegin = Drawer.Generic.parseDrawerDelim "LOGBOOK"