diff options
author | Albert Krewinkel <albert@zeitkraut.de> | 2016-08-29 14:10:58 +0200 |
---|---|---|
committer | Albert Krewinkel <albert@zeitkraut.de> | 2016-08-29 14:35:16 +0200 |
commit | 88313c0b93694e310175a461ed74f497debbd57d (patch) | |
tree | 71a48edbf450e18c4ecb74b6555c2c9ab43c90ba | |
parent | 0568aa5cad5ca5501dc0565b0e341fc5393f67e2 (diff) | |
download | pandoc-88313c0b93694e310175a461ed74f497debbd57d.tar.gz |
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).
-rw-r--r-- | src/Text/Pandoc/Readers/Org/ExportSettings.hs | 4 | ||||
-rw-r--r-- | src/Text/Pandoc/Readers/Org/Meta.hs | 7 | ||||
-rw-r--r-- | src/Text/Pandoc/Readers/Org/ParserState.hs | 2 | ||||
-rw-r--r-- | 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" |