From 5bd2d28b1946baf37ba880578b3b01d9b36a36d3 Mon Sep 17 00:00:00 2001 From: Albert Krewinkel Date: Wed, 18 Dec 2019 21:57:14 +0100 Subject: Org reader: wrap named table in div, using name as id Closes: #5984 --- src/Text/Pandoc/Readers/Org/Blocks.hs | 22 ++++++++++------------ test/Tests/Readers/Org/Block/Table.hs | 7 +++++++ test/command/3706.md | 19 ++++++++++--------- 3 files changed, 27 insertions(+), 21 deletions(-) diff --git a/src/Text/Pandoc/Readers/Org/Blocks.hs b/src/Text/Pandoc/Readers/Org/Blocks.hs index 785811da8..dc7a26aca 100644 --- a/src/Text/Pandoc/Readers/Org/Blocks.hs +++ b/src/Text/Pandoc/Readers/Org/Blocks.hs @@ -613,18 +613,16 @@ orgTable = try $ do guard =<< not . isFirstInListItem <$> getState blockAttrs <- blockAttributes lookAhead tableStart - do - rows <- tableRows - let captionMb = blockAttrCaption blockAttrs - -- amend caption with span as ID tag iff both are present - let amendedCaption = do - caption' <- captionMb - name <- blockAttrName blockAttrs `mplus` blockAttrLabel blockAttrs - let tag = B.spanWith (name, mempty, mempty) mempty - return $ fmap (tag <>) caption' - let caption = fromMaybe mempty (amendedCaption `mplus` captionMb) - return $ (<$> caption) . orgToPandocTable . normalizeTable - =<< rowsToTable rows + rows <- tableRows + + let caption = fromMaybe mempty (blockAttrCaption blockAttrs) + let orgTbl = normalizeTable <$> rowsToTable rows + -- wrap table in div if a name or label is given + let identMb = blockAttrName blockAttrs `mplus` blockAttrLabel blockAttrs + let wrap = case identMb of + Just ident -> B.divWith (ident, mempty, mempty) + Nothing -> id + return . fmap wrap $ (orgToPandocTable <$> orgTbl <*> caption) orgToPandocTable :: OrgTable -> Inlines diff --git a/test/Tests/Readers/Org/Block/Table.hs b/test/Tests/Readers/Org/Block/Table.hs index c8b0a1375..102623735 100644 --- a/test/Tests/Readers/Org/Block/Table.hs +++ b/test/Tests/Readers/Org/Block/Table.hs @@ -160,4 +160,11 @@ tests = [ [ plain "x", plain "6" ] , [ plain "9", plain "42" ] ] + + , "named table" =: + T.unlines [ "#+NAME: x-marks-the-spot" + , "| x |" + ] =?> + divWith ("x-marks-the-spot", mempty, mempty) + (simpleTable' 1 mempty [ [ plain "x" ] ]) ] diff --git a/test/command/3706.md b/test/command/3706.md index 5b2e32f7f..3765372fa 100644 --- a/test/command/3706.md +++ b/test/command/3706.md @@ -15,15 +15,16 @@ pandoc -f org -t native | 2 | La | | 3 | La | ^D -[Table [Span ("tab",[],[]) [],Str "Lalelu."] [AlignDefault,AlignDefault] [0.0,0.0] - [[Plain [Str "Id"]] - ,[Plain [Str "Desc"]]] - [[[Plain [Str "1"]] - ,[Plain [Str "La"]]] - ,[[Plain [Str "2"]] - ,[Plain [Str "La"]]] - ,[[Plain [Str "3"]] - ,[Plain [Str "La"]]]]] +[Div ("tab",[],[]) + [Table [Str "Lalelu."] [AlignDefault,AlignDefault] [0.0,0.0] + [[Plain [Str "Id"]] + ,[Plain [Str "Desc"]]] + [[[Plain [Str "1"]] + ,[Plain [Str "La"]]] + ,[[Plain [Str "2"]] + ,[Plain [Str "La"]]] + ,[[Plain [Str "3"]] + ,[Plain [Str "La"]]]]]] ``` ``` -- cgit v1.2.3