From 88313c0b93694e310175a461ed74f497debbd57d Mon Sep 17 00:00:00 2001 From: Albert Krewinkel Date: Mon, 29 Aug 2016 14:10:58 +0200 Subject: Org reader: respect `creator` export option The `creator` option controls whether the creator meta-field should be included in the final markup. Setting `#+OPTIONS: creator:nil` will drop the creator field from the final meta-data output. Org-mode recognizes the special value `comment` for this field, causing the creator to be included in a comment. This is difficult to translate to Pandoc internals and is hence interpreted the same as other truish values (i.e. the meta field is kept if it's present). --- src/Text/Pandoc/Readers/Org/ExportSettings.hs | 4 +++- src/Text/Pandoc/Readers/Org/Meta.hs | 7 +++---- src/Text/Pandoc/Readers/Org/ParserState.hs | 2 ++ tests/Tests/Readers/Org.hs | 6 ++++++ 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/Text/Pandoc/Readers/Org/ExportSettings.hs b/src/Text/Pandoc/Readers/Org/ExportSettings.hs index 6233a6104..283cfa998 100644 --- a/src/Text/Pandoc/Readers/Org/ExportSettings.hs +++ b/src/Text/Pandoc/Readers/Org/ExportSettings.hs @@ -56,7 +56,9 @@ exportSetting = choice , archivedTreeSetting "arch" (\val es -> es { exportArchivedTrees = val }) , booleanSetting "author" (\val es -> es { exportWithAuthor = val }) , ignoredSetting "c" - , ignoredSetting "creator" + -- org-mode allows the special value `comment` for creator, which we'll + -- interpret as true as it doesn't make sense in the context of Pandoc. + , booleanSetting "creator" (\val es -> es { exportWithCreator = val }) , complementableListSetting "d" (\val es -> es { exportDrawers = val }) , ignoredSetting "date" , ignoredSetting "e" diff --git a/src/Text/Pandoc/Readers/Org/Meta.hs b/src/Text/Pandoc/Readers/Org/Meta.hs index a20c25e09..11eb18e36 100644 --- a/src/Text/Pandoc/Readers/Org/Meta.hs +++ b/src/Text/Pandoc/Readers/Org/Meta.hs @@ -54,10 +54,9 @@ metaExport :: OrgParser (F Meta) metaExport = do st <- getState let settings = orgStateExportSettings st - let withAuthor = exportWithAuthor settings - let withEmail = exportWithEmail settings - return $ (if withAuthor then id else removeMeta "author") - . (if withEmail then id else removeMeta "email") + return $ (if exportWithAuthor settings then id else removeMeta "author") + . (if exportWithCreator settings then id else removeMeta "creator") + . (if exportWithEmail settings then id else removeMeta "email") <$> orgStateMeta st removeMeta :: String -> Meta -> Meta diff --git a/src/Text/Pandoc/Readers/Org/ParserState.hs b/src/Text/Pandoc/Readers/Org/ParserState.hs index 4c3aa298c..84dbe9d33 100644 --- a/src/Text/Pandoc/Readers/Org/ParserState.hs +++ b/src/Text/Pandoc/Readers/Org/ParserState.hs @@ -164,6 +164,7 @@ data ExportSettings = ExportSettings , exportSpecialStrings :: Bool -- ^ Parse ellipses and dashes smartly , exportSubSuperscripts :: Bool -- ^ TeX-like syntax for sub- and superscripts , exportWithAuthor :: Bool -- ^ Include author in final meta-data + , exportWithCreator :: Bool -- ^ Include creator in final meta-data , exportWithEmail :: Bool -- ^ Include email in final meta-data } @@ -180,6 +181,7 @@ defaultExportSettings = ExportSettings , exportSpecialStrings = True , exportSubSuperscripts = True , exportWithAuthor = True + , exportWithCreator = True , exportWithEmail = True } diff --git a/tests/Tests/Readers/Org.hs b/tests/Tests/Readers/Org.hs index 5191f63d5..d6e7bba22 100644 --- a/tests/Tests/Readers/Org.hs +++ b/tests/Tests/Readers/Org.hs @@ -675,6 +675,12 @@ tests = ] =?> Pandoc nullMeta mempty + , "disable creator export" =: + unlines [ "#+OPTIONS: creator:nil" + , "#+creator: The Architect" + ] =?> + Pandoc nullMeta mempty + , "disable email export" =: unlines [ "#+OPTIONS: email:nil" , "#+email: no-mail-please@example.com" -- cgit v1.2.3