summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlbert Krewinkel <albert@zeitkraut.de>2022-10-12 15:38:11 +0200
committerJohn MacFarlane <jgm@berkeley.edu>2022-12-16 10:43:01 -0800
commit471317f4fe0a6aa6f16a27cd8a77d5cc5c6ee1f0 (patch)
tree3b419b3bad6c4399d1e8453bdbcbb9289ff585f3 /src
parent0d6c2e3e22290a7e29abbb7449c2f3c49ce12af4 (diff)
Extensions: add new function `disableExtensions`.
The function removes all elements in a second set from a base set. Extensions in the second set that are not in the base set are ignored.
Diffstat (limited to 'src')
-rw-r--r--src/Text/Pandoc/Extensions.hs9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/Text/Pandoc/Extensions.hs b/src/Text/Pandoc/Extensions.hs
index efe4ed879..eedb823ae 100644
--- a/src/Text/Pandoc/Extensions.hs
+++ b/src/Text/Pandoc/Extensions.hs
@@ -23,6 +23,7 @@ module Text.Pandoc.Extensions ( Extension(..)
, extensionEnabled
, enableExtension
, disableExtension
+ , disableExtensions
, getDefaultExtensions
, getAllExtensions
, pandocExtensions
@@ -193,6 +194,14 @@ enableExtension x (Extensions exts) = Extensions (Set.insert x exts)
disableExtension :: Extension -> Extensions -> Extensions
disableExtension x (Extensions exts) = Extensions (Set.delete x exts)
+-- | Removes the extensions in the second set from those in the first.
+disableExtensions :: Extensions -- ^ base set
+ -> Extensions -- ^ extensions to remove
+ -> Extensions
+disableExtensions (Extensions base) (Extensions remove) = Extensions $
+ -- keep only those extensions that are in `base` but not in `remove`.
+ base `Set.difference` remove
+
-- | Extensions to be used with pandoc-flavored markdown.
pandocExtensions :: Extensions
pandocExtensions = extensionsFromList