@@ -13,6 +13,8 @@ module Text.Pandoc.Readers.Org.ExportSettings
15import Prelude
15import Prelude
16+import Text.Pandoc.Class (PandocMonad, report)
17+import Text.Pandoc.Logging (LogMessage (UnknownOrgExportOption))
16import Text.Pandoc.Readers.Org.ParserState
18import Text.Pandoc.Readers.Org.ParserState
17import Text.Pandoc.Readers.Org.Parsing
19import Text.Pandoc.Readers.Org.Parsing
@@ -21,14 +23,14 @@ import Data.Char (toLower)
21import Data.Maybe (listToMaybe)
23import Data.Maybe (listToMaybe)
23-- | Read and handle space separated org-mode export settings.
25-- | Read and handle space separated org-mode export settings.
24−exportSettings :: Monad m => OrgParser m ()
26+exportSettings :: PandocMonad m => OrgParser m ()
25−exportSettings = void $ sepBy spaces exportSetting
27+exportSettings = void $ sepBy skipSpaces exportSetting
27-- | Setter function for export settings.
29-- | Setter function for export settings.
28type ExportSettingSetter a = a -> ExportSettings -> ExportSettings
30type ExportSettingSetter a = a -> ExportSettings -> ExportSettings
30-- | Read and process a single org-mode export option.
32-- | Read and process a single org-mode export option.
31−exportSetting :: Monad m => OrgParser m ()
33+exportSetting :: PandocMonad m => OrgParser m ()
32exportSetting = choice
34exportSetting = choice
33 [ booleanSetting "^" (\val es -> es { exportSubSuperscripts = val })
35 [ booleanSetting "^" (\val es -> es { exportSubSuperscripts = val })
34 , booleanSetting "'" (\val es -> es { exportSmartQuotes = val })
36 , booleanSetting "'" (\val es -> es { exportSmartQuotes = val })
@@ -63,6 +65,7 @@ exportSetting = choice
63 , ignoredSetting "toc"
65 , ignoredSetting "toc"
64 , booleanSetting "todo" (\val es -> es { exportWithTodoKeywords = val })
66 , booleanSetting "todo" (\val es -> es { exportWithTodoKeywords = val })
65 , ignoredSetting "|"
67 , ignoredSetting "|"
66 ] <?> "export setting"
69 ] <?> "export setting"
68genericExportSetting :: Monad m
71genericExportSetting :: Monad m
@@ -144,6 +147,13 @@ complementableListSetting = genericExportSetting $ choice
144ignoredSetting :: Monad m => String -> OrgParser m ()
147ignoredSetting :: Monad m => String -> OrgParser m ()
145ignoredSetting s = try (() <$ string s <* char ':' <* many1 nonspaceChar)
148ignoredSetting s = try (() <$ string s <* char ':' <* many1 nonspaceChar)
150+-- | Read any setting string, but ignore it and emit a warning.
151+ignoreAndWarn :: PandocMonad m => OrgParser m ()
152+ignoreAndWarn = try $ do
153+ opt <- many1 nonspaceChar
154+ report (UnknownOrgExportOption opt)
147-- | Read an elisp boolean. Only NIL is treated as false, non-NIL values are
157-- | Read an elisp boolean. Only NIL is treated as false, non-NIL values are
148-- interpreted as true.
158-- interpreted as true.
149elispBoolean :: Monad m => OrgParser m Bool
159elispBoolean :: Monad m => OrgParser m Bool