aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2017-02-26 22:48:02 +0100
committerJohn MacFarlane <jgm@berkeley.edu>2017-02-26 22:48:02 +0100
commit377c27befedd8f9e54975296a71bf4c954399d2d (patch)
tree65fd31def34118e6189d47f78753f629eb946788
parentd7e25d203ac7ff1a18b5d0d6bbffa48d1e033e2c (diff)
downloadpandoc-377c27befedd8f9e54975296a71bf4c954399d2d.tar.gz
`--self-contained`: don't incorporate elements with `data-external="1"`.
You can leave an external link as it is by adding the attribute data-external="1" to the element. Pandoc will then not try to incorporate its content when `--self-contained` is used. This is similar to a feature already supported by the EPUB writer. Closes #2656.
-rw-r--r--MANUAL.txt13
-rw-r--r--src/Text/Pandoc/SelfContained.hs2
2 files changed, 10 insertions, 5 deletions
diff --git a/MANUAL.txt b/MANUAL.txt
index e46efd256..2c9fdcbe6 100644
--- a/MANUAL.txt
+++ b/MANUAL.txt
@@ -634,11 +634,14 @@ Options affecting specific writers
stylesheets at absolute URLs will be downloaded; those at relative URLs
will be sought relative to the working directory (if the first source
file is local) or relative to the base URL (if the first source
- file is remote). Limitation: resources that are loaded dynamically
- through JavaScript cannot be incorporated; as a result, `--self-contained`
- does not work with `--mathjax`, and some advanced features (e.g.
- zoom or speaker notes) may not work in an offline "self-contained"
- `reveal.js` slide show.
+ file is remote). Elements with the attribute
+ `data-external="1"` will be left alone; the documents they
+ link to will not be incorporated in the document.
+ Limitation: resources that are loaded dynamically through
+ JavaScript cannot be incorporated; as a result,
+ `--self-contained` does not work with `--mathjax`, and some
+ advanced features (e.g. zoom or speaker notes) may not work
+ in an offline "self-contained" `reveal.js` slide show.
`--html-q-tags`
diff --git a/src/Text/Pandoc/SelfContained.hs b/src/Text/Pandoc/SelfContained.hs
index e6d859421..378b2fe98 100644
--- a/src/Text/Pandoc/SelfContained.hs
+++ b/src/Text/Pandoc/SelfContained.hs
@@ -69,6 +69,8 @@ makeDataURI (mime, raw) =
convertTags :: PandocMonad m => Maybe String -> [Tag String] -> m [Tag String]
convertTags _ [] = return []
+convertTags sourceURL (t@TagOpen{}:ts)
+ | fromAttrib "data-external" t == "1" = (t:) <$> convertTags sourceURL ts
convertTags sourceURL (t@(TagOpen tagname as):ts)
| tagname `elem`
["img", "embed", "video", "input", "audio", "source", "track"] = do