diff options
author | leungbk <bkleung89@gmail.com> | 2019-01-27 04:52:00 +0100 |
---|---|---|
committer | Albert Krewinkel <albert+github@zeitkraut.de> | 2019-01-30 18:27:38 +0100 |
commit | dc431745730aaac244a2e59b25f5554a654abf4c (patch) | |
tree | e36296b1e14fdb6010bdb369df1618884ee49a8c /src/Text/Pandoc/Readers/Org/DocumentTree.hs | |
parent | c9454a4176878803870c3f658ba01b5727b11776 (diff) | |
download | pandoc-dc431745730aaac244a2e59b25f5554a654abf4c.tar.gz |
Org reader: separate filtering logic from conversion function.
Diffstat (limited to 'src/Text/Pandoc/Readers/Org/DocumentTree.hs')
-rw-r--r-- | src/Text/Pandoc/Readers/Org/DocumentTree.hs | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/Text/Pandoc/Readers/Org/DocumentTree.hs b/src/Text/Pandoc/Readers/Org/DocumentTree.hs index 7d55892fe..131408289 100644 --- a/src/Text/Pandoc/Readers/Org/DocumentTree.hs +++ b/src/Text/Pandoc/Readers/Org/DocumentTree.hs @@ -29,6 +29,7 @@ Parsers for org-mode headlines and document subtrees module Text.Pandoc.Readers.Org.DocumentTree ( documentTree , headlineToBlocks + , filterHeadlineTree ) where import Prelude @@ -161,17 +162,18 @@ headlineToBlocks hdln = do let tags = headlineTags hdln let text = headlineText hdln let level = headlineLevel hdln - shouldNotExport <- hasDoNotExportTag tags case () of - _ | shouldNotExport -> return mempty _ | any isArchiveTag tags -> archivedHeadlineToBlocks hdln _ | isCommentTitle text -> return mempty _ | maxLevel <= level -> headlineToHeaderWithList hdln _ | otherwise -> headlineToHeaderWithContents hdln -hasDoNotExportTag :: Monad m => [Tag] -> OrgParser m Bool -hasDoNotExportTag tags = containsExcludedTag . orgStateExcludedTags <$> getState - where containsExcludedTag s = any (`Set.member` s) tags +filterHeadlineTree :: Headline -> OrgParserState -> Headline +filterHeadlineTree hdln st = + hdln { headlineChildren = + [filterHeadlineTree childHdln st | + childHdln <- headlineChildren hdln, + not $ any (`Set.member` orgStateExcludedTags st) (headlineTags childHdln)] } isArchiveTag :: Tag -> Bool isArchiveTag = (== toTag "ARCHIVE") |