@@ -29,6 +29,7 @@ Parsers for Org-mode meta declarations.
2929-}
3030module Text.Pandoc.Readers.Org.Meta
3131 ( metaLine
32+ , metaExport
3233 ) where
3334
3435import Text.Pandoc.Readers.Org.BlockStarts
@@ -48,6 +49,22 @@ import Data.List ( intersperse )
4849import qualified Data.Map as M
4950import Network.HTTP ( urlEncode )
5051
52+-- | Returns the current meta, respecting export options.
53+metaExport :: OrgParser (F Meta)
54+metaExport = do
55+ st <- getState
56+ let withAuthor = extractExportOption exportWithAuthor st
57+ return $ (if withAuthor then id else removeMeta "author")
58+ <$> orgStateMeta st
59+
60+removeMeta :: String -> Meta -> Meta
61+removeMeta key meta' =
62+ let metaMap = unMeta meta'
63+ in Meta $ M.delete key metaMap
64+
65+extractExportOption :: (ExportSettings -> a) -> OrgParserState -> a
66+extractExportOption ex = ex . orgStateExportSettings
67+
5168-- | Parse and handle a single line containing meta information
5269-- The order, in which blocks are tried, makes sure that we're not looking at
5370-- the beginning of a block, so we don't need to check for it