diff options
author | Jan Tojnar <jtojnar@gmail.com> | 2021-06-05 16:31:12 +0200 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2021-06-05 13:51:18 -0600 |
commit | c6f8c38c49e9579bf0bc0c91131bb206f0617e6b (patch) | |
tree | 1bdacc491a38fc06aeaadd658c22ad0572566ed3 | |
parent | 17a2f4c49dab7d4e6ec9cc010ad2cc02a147e2d4 (diff) | |
download | pandoc-c6f8c38c49e9579bf0bc0c91131bb206f0617e6b.tar.gz |
Markdown writer: re-use functions from Inline
Instead of duplicating linkAttributes and attrsToMarkdown, let’s just use those from the Inline module.
-rw-r--r-- | src/Text/Pandoc/Writers/Markdown.hs | 29 | ||||
-rw-r--r-- | src/Text/Pandoc/Writers/Markdown/Inline.hs | 4 |
2 files changed, 4 insertions, 29 deletions
diff --git a/src/Text/Pandoc/Writers/Markdown.hs b/src/Text/Pandoc/Writers/Markdown.hs index 2ad9eabd9..38227dfa8 100644 --- a/src/Text/Pandoc/Writers/Markdown.hs +++ b/src/Text/Pandoc/Writers/Markdown.hs @@ -43,7 +43,7 @@ import Text.Pandoc.Templates (renderTemplate) import Text.DocTemplates (Val(..), Context(..), FromContext(..)) import Text.Pandoc.Walk import Text.Pandoc.Writers.HTML (writeHtml5String) -import Text.Pandoc.Writers.Markdown.Inline (inlineListToMarkdown) +import Text.Pandoc.Writers.Markdown.Inline (inlineListToMarkdown, linkAttributes, attrsToMarkdown) import Text.Pandoc.Writers.Markdown.Types (MarkdownVariant(..), WriterState(..), WriterEnv(..), @@ -257,39 +257,12 @@ noteToMarkdown opts num blocks = do then hang (writerTabStop opts) (marker <> spacer) contents else marker <> spacer <> contents -attrsToMarkdown :: Attr -> Doc Text -attrsToMarkdown attribs = braces $ hsep [attribId, attribClasses, attribKeys] - where attribId = case attribs of - ("",_,_) -> empty - (i,_,_) -> "#" <> escAttr i - attribClasses = case attribs of - (_,[],_) -> empty - (_,cs,_) -> hsep $ - map (escAttr . ("."<>)) - cs - attribKeys = case attribs of - (_,_,[]) -> empty - (_,_,ks) -> hsep $ - map (\(k,v) -> escAttr k - <> "=\"" <> - escAttr v <> "\"") ks - escAttr = mconcat . map escAttrChar . T.unpack - escAttrChar '"' = literal "\\\"" - escAttrChar '\\' = literal "\\\\" - escAttrChar c = literal $ T.singleton c - -- | (Code) blocks with a single class can just use it standalone, -- no need to bother with curly braces. classOrAttrsToMarkdown :: Attr -> Doc Text classOrAttrsToMarkdown ("",[cls],_) = literal cls classOrAttrsToMarkdown attrs = attrsToMarkdown attrs -linkAttributes :: WriterOptions -> Attr -> Doc Text -linkAttributes opts attr = - if isEnabled Ext_link_attributes opts && attr /= nullAttr - then attrsToMarkdown attr - else empty - -- | Ordered list start parser for use in Para below. olMarker :: Parser Text ParserState () olMarker = do (start, style', delim) <- anyOrderedListMarker diff --git a/src/Text/Pandoc/Writers/Markdown/Inline.hs b/src/Text/Pandoc/Writers/Markdown/Inline.hs index e6c6da5a9..e66258220 100644 --- a/src/Text/Pandoc/Writers/Markdown/Inline.hs +++ b/src/Text/Pandoc/Writers/Markdown/Inline.hs @@ -11,7 +11,9 @@ Portability : portable -} module Text.Pandoc.Writers.Markdown.Inline ( - inlineListToMarkdown + inlineListToMarkdown, + linkAttributes, + attrsToMarkdown ) where import Control.Monad.Reader import Control.Monad.State.Strict |