aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2019-03-25 08:43:59 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2019-03-25 08:43:59 -0700
commit052684712b8a36854c622468f5d4ddd367199c1c (patch)
treed5bdf4faa964cbcfa18aaa7b9fab84b53bf49b22
parente91af0a8a32d68af4c533fdf4b7caaafade577ef (diff)
downloadpandoc-052684712b8a36854c622468f5d4ddd367199c1c.tar.gz
HTML reader: read `data-foo` attribute into `foo`.
The HTML writer adds the `data-` prefix for HTML5 for nonstandard attributes. But the attributes are represented in the AST without the `data-` prefix, so we should strip this when reading HTML. Closes #5392.
-rw-r--r--src/Text/Pandoc/Readers/HTML.hs3
-rw-r--r--test/Tests/Readers/HTML.hs2
2 files changed, 3 insertions, 2 deletions
diff --git a/src/Text/Pandoc/Readers/HTML.hs b/src/Text/Pandoc/Readers/HTML.hs
index 45af20ca8..dfc31f7af 100644
--- a/src/Text/Pandoc/Readers/HTML.hs
+++ b/src/Text/Pandoc/Readers/HTML.hs
@@ -807,7 +807,8 @@ mathMLToTeXMath s = writeTeX <$> readMathML s
toStringAttr :: [(Text, Text)] -> [(String, String)]
toStringAttr = map go
- where go (x,y) = (T.unpack x, T.unpack y)
+ where go (x,y) = (T.unpack (fromMaybe x $ T.stripPrefix "data-" x),
+ T.unpack y)
pScriptMath :: PandocMonad m => TagParser m Inlines
pScriptMath = try $ do
diff --git a/test/Tests/Readers/HTML.hs b/test/Tests/Readers/HTML.hs
index 69078d955..be5178e07 100644
--- a/test/Tests/Readers/HTML.hs
+++ b/test/Tests/Readers/HTML.hs
@@ -83,7 +83,7 @@ tests = [ testGroup "base tag"
, test htmlNativeDivs "<main role=X> becomes <div role=X>" $ "<main role=foobar>hello</main>" =?>
doc (divWith ("", [], [("role", "foobar")]) (plain (text "hello")))
, test htmlNativeDivs "<main> has attributes preserved" $ "<main id=foo class=bar data-baz=qux>hello</main>" =?>
- doc (divWith ("foo", ["bar"], [("role", "main"), ("data-baz", "qux")]) (plain (text "hello")))
+ doc (divWith ("foo", ["bar"], [("role", "main"), ("baz", "qux")]) (plain (text "hello")))
, test htmlNativeDivs "<main> closes <p>" $ "<p>hello<main>main content</main>" =?>
doc (para (text "hello") <> divWith ("", [], [("role", "main")]) (plain (text "main content")))
, test htmlNativeDivs "<main> followed by text" $ "<main>main content</main>non-main content" =?>