git.iko.soy/typeable/pandoc
on master help sign in
Org reader: respect export setting which disables entities
738c08bAlbert Krewinkel
src/Text/Pandoc/Readers/Org/ExportSettings.hs+1−1
@@ -47,7 +47,7 @@ exportSetting = choice
47 , booleanSetting "creator" (\val es -> es { exportWithCreator = val })
47 , booleanSetting "creator" (\val es -> es { exportWithCreator = val })
48 , complementableListSetting "d" (\val es -> es { exportDrawers = val })
48 , complementableListSetting "d" (\val es -> es { exportDrawers = val })
49 , ignoredSetting "date"
49 , ignoredSetting "date"
50− , ignoredSetting "e"
50+ , booleanSetting "e" (\val es -> es { exportWithEntities = val })
51 , booleanSetting "email" (\val es -> es { exportWithEmail = val })
51 , booleanSetting "email" (\val es -> es { exportWithEmail = val })
52 , ignoredSetting "f"
52 , ignoredSetting "f"
53 , integerSetting "H" (\val es -> es { exportHeadlineLevels = val })
53 , integerSetting "H" (\val es -> es { exportHeadlineLevels = val })
src/Text/Pandoc/Readers/Org/Inlines.hs+13−5
@@ -790,9 +790,12 @@ inlineLaTeX :: PandocMonad m => OrgParser m (F Inlines)
790inlineLaTeX = try $ do
790inlineLaTeX = try $ do
791 cmd <- inlineLaTeXCommand
791 cmd <- inlineLaTeXCommand
792 texOpt <- getExportSetting exportWithLatex
792 texOpt <- getExportSetting exportWithLatex
793+ allowEntities <- getExportSetting exportWithEntities
793 ils <- parseAsInlineLaTeX cmd texOpt
794 ils <- parseAsInlineLaTeX cmd texOpt
794 maybe mzero returnF $
795 maybe mzero returnF $
796+ parseAsMathMLSym allowEntities cmd `mplus`
795− parseAsMathMLSym cmd `mplus` parseAsMath cmd texOpt `mplus` ils
797+ parseAsMath cmd texOpt `mplus`
798+ ils
796 where
799 where
797 parseAsInlineLaTeX :: PandocMonad m
800 parseAsInlineLaTeX :: PandocMonad m
798 => Text -> TeXExport -> OrgParser m (Maybe Inlines)
801 => Text -> TeXExport -> OrgParser m (Maybe Inlines)
@@ -801,10 +804,15 @@ inlineLaTeX = try $ do
801 TeXIgnore -> return (Just mempty)
804 TeXIgnore -> return (Just mempty)
802 TeXVerbatim -> return (Just $ B.str cs)
805 TeXVerbatim -> return (Just $ B.str cs)
803
806
804− parseAsMathMLSym :: Text -> Maybe Inlines
807+ parseAsMathMLSym :: Bool -> Text -> Maybe Inlines
805− parseAsMathMLSym cs = B.str <$> MathMLEntityMap.getUnicode (clean cs)
808+ parseAsMathMLSym allowEntities cs = do
806− -- drop initial backslash and any trailing "{}"
809+ -- drop initial backslash and any trailing "{}"
807− where clean = T.dropWhileEnd (`elem` ("{}" :: String)) . T.drop 1
810+ let clean = T.dropWhileEnd (`elem` ("{}" :: String)) . T.drop 1
811+ -- If entities are disabled, then return the string as text, but
812+ -- only if this *is* a MathML entity.
813+ case B.str <$> MathMLEntityMap.getUnicode (clean cs) of
814+ Just _ | not allowEntities -> Just $ B.str cs
815+ x -> x
808
816
809 state :: ParserState
817 state :: ParserState
810 state = def{ stateOptions = def{ readerExtensions =
818 state = def{ stateOptions = def{ readerExtensions =
src/Text/Pandoc/Readers/Org/ParserState.hs+2
@@ -257,6 +257,7 @@ data ExportSettings = ExportSettings
257 , exportWithAuthor :: Bool -- ^ Include author in final meta-data
257 , exportWithAuthor :: Bool -- ^ Include author in final meta-data
258 , exportWithCreator :: Bool -- ^ Include creator in final meta-data
258 , exportWithCreator :: Bool -- ^ Include creator in final meta-data
259 , exportWithEmail :: Bool -- ^ Include email in final meta-data
259 , exportWithEmail :: Bool -- ^ Include email in final meta-data
260+ , exportWithEntities :: Bool -- ^ Include MathML-like entities
260 , exportWithLatex :: TeXExport -- ^ Handling of raw TeX commands
261 , exportWithLatex :: TeXExport -- ^ Handling of raw TeX commands
261 , exportWithPlanning :: Bool -- ^ Keep planning info after headlines
262 , exportWithPlanning :: Bool -- ^ Keep planning info after headlines
262 , exportWithTags :: Bool -- ^ Keep tags as part of headlines
263 , exportWithTags :: Bool -- ^ Keep tags as part of headlines
@@ -279,6 +280,7 @@ defaultExportSettings = ExportSettings
279 , exportWithAuthor = True
280 , exportWithAuthor = True
280 , exportWithCreator = True
281 , exportWithCreator = True
281 , exportWithEmail = True
282 , exportWithEmail = True
283+ , exportWithEntities = True
282 , exportWithLatex = TeXExport
284 , exportWithLatex = TeXExport
283 , exportWithPlanning = False
285 , exportWithPlanning = False
284 , exportWithTags = True
286 , exportWithTags = True
test/Tests/Readers/Org/Directive.hs+6
@@ -150,6 +150,12 @@ tests =
150 ] =?>
150 ] =?>
151 Pandoc nullMeta mempty
151 Pandoc nullMeta mempty
152
152
153+ , "disable MathML-like entities" =:
154+ T.unlines [ "#+OPTIONS: e:nil"
155+ , "Icelandic letter: \\thorn"
156+ ] =?>
157+ para "Icelandic letter: \\thorn"
158+
153 , "disable inclusion of todo keywords" =:
159 , "disable inclusion of todo keywords" =:
154 T.unlines [ "#+OPTIONS: todo:nil"
160 T.unlines [ "#+OPTIONS: todo:nil"
155 , "** DONE todo export"
161 , "** DONE todo export"