From 937b92cd304a6a404f750c7f9a894adfb3638d01 Mon Sep 17 00:00:00 2001 From: Alexander Krotov Date: Wed, 22 Aug 2018 12:16:57 +0300 Subject: [PATCH] HTML reader: extract spaces inside links instead of trimming them Fixes #4845 --- src/Text/Pandoc/Readers/HTML.hs | 6 +++--- test/command/4845.md | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 test/command/4845.md diff --git a/src/Text/Pandoc/Readers/HTML.hs b/src/Text/Pandoc/Readers/HTML.hs index df8dc1a2d..697ab89e9 100644 --- a/src/Text/Pandoc/Readers/HTML.hs +++ b/src/Text/Pandoc/Readers/HTML.hs @@ -745,18 +745,18 @@ pLink = try $ do let uid = fromMaybe (T.unpack $ fromAttrib "name" tag) $ maybeFromAttrib "id" tag let cls = words $ T.unpack $ fromAttrib "class" tag - lab <- trimInlines . mconcat <$> manyTill inline (pCloses "a") + lab <- mconcat <$> manyTill inline (pCloses "a") -- check for href; if href, then a link, otherwise a span case maybeFromAttrib "href" tag of Nothing -> - return $ B.spanWith (uid, cls, []) lab + return $ extractSpaces (B.spanWith (uid, cls, [])) lab Just url' -> do mbBaseHref <- baseHref <$> getState let url = case (parseURIReference url', mbBaseHref) of (Just rel, Just bs) -> show (rel `nonStrictRelativeTo` bs) _ -> url' - return $ B.linkWith (uid, cls, []) (escapeURI url) title lab + return $ extractSpaces (B.linkWith (uid, cls, []) (escapeURI url) title) lab pImage :: PandocMonad m => TagParser m Inlines pImage = do diff --git a/test/command/4845.md b/test/command/4845.md new file mode 100644 index 000000000..093161ac7 --- /dev/null +++ b/test/command/4845.md @@ -0,0 +1,6 @@ +``` +% pandoc -f html -t native +x leading trailing space x +^D +[Plain [Str "x",Space,Link ("",[],[]) [Str "leading",Space,Str "trailing",Space,Str "space"] ("/foo",""),Space,Str "x"]] +```