From dd06d6354081f478e99d864ac4343896ec887eda Mon Sep 17 00:00:00 2001 From: Tristan de Cacqueray Date: Sat, 11 Apr 2020 16:57:59 +0000 Subject: HTML reader: support (#6271) See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/bdo Closes #5794 --- src/Text/Pandoc/Readers/HTML.hs | 13 +++++++++++++ test/command/1592.md | 21 +++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/Text/Pandoc/Readers/HTML.hs b/src/Text/Pandoc/Readers/HTML.hs index 6cfef0ebe..798661fe3 100644 --- a/src/Text/Pandoc/Readers/HTML.hs +++ b/src/Text/Pandoc/Readers/HTML.hs @@ -648,6 +648,7 @@ inline = choice , pLineBreak , pLink , pImage + , pBdo , pCode , pCodeWithClass [("samp","sample"),("var","variable")] , pSpan @@ -802,6 +803,18 @@ pCode = try $ do result <- manyTill pAny (pCloses open) return $ B.codeWith (mkAttr attr) $ T.unwords $ T.lines $ innerText result +-- https://developer.mozilla.org/en-US/docs/Web/HTML/Element/bdo +-- Bidirectional Text Override +pBdo :: PandocMonad m => TagParser m Inlines +pBdo = try $ do + TagOpen _ attr' <- lookAhead $ pSatisfy $ tagOpen (=="bdo") (const True) + let attr = toStringAttr attr' + contents <- pInTags "bdo" inline + return $ case lookup "dir" attr of + -- Only bdo with a direction matters + Just dir -> B.spanWith ("", [], [("dir",T.toLower dir)]) contents + Nothing -> contents + pSpan :: PandocMonad m => TagParser m Inlines pSpan = try $ do guardEnabled Ext_native_spans diff --git a/test/command/1592.md b/test/command/1592.md index 54e59137b..0f6151063 100644 --- a/test/command/1592.md +++ b/test/command/1592.md @@ -47,3 +47,24 @@ pandoc -f native -t markdown [hi]{.smallcaps} ``` +``` +% pandoc -f html -t native +foo +^D +[Plain [Span ("",[],[("dir","ltr")]) [Str "foo"]]] +``` + +``` +% pandoc -f html -t native +foobarbaz +^D +[Plain [Span ("",[],[("dir","rtl")]) [Str "foo",Span ("",[],[("dir","ltr")]) [Str "bar"],Str "baz"]]] +``` + +``` +% pandoc -f html -t native +

This text will go right +to left.

+^D +[Para [Span ("",[],[("dir","rtl")]) [Str "This",Space,Str "text",Space,Str "will",Space,Str "go",Space,Str "right",SoftBreak,Str "to",Space,Str "left."]]] +``` -- cgit v1.2.3