Add rebase_relative_paths extension.

- Add manual entry for (non-default) extension
  `rebase_relative_paths`.
- Add constructor `Ext_rebase_relative_paths` to `Extensions`
  in Text.Pandoc.Extensions [API change]. When enabled, this
  extension rewrites relative image and link paths by prepending
  the (relative) directory of the containing file.
- Make Markdown reader sensitive to the new extension.
- Add tests for #3752.

Closes #3752.

NB. currently the extension applies to markdown and associated
readers but not commonmark/gfm.
This commit is contained in:
John MacFarlane
2021-05-27 10:38:25 -07:00
parent 0226d2320f
commit 834da53058
9 changed files with 111 additions and 9 deletions
+35
View File
@@ -0,0 +1,35 @@
```
% pandoc command/chap1/text.md command/chap2/text.md -f markdown+rebase_relative_paths --verbose -t docx | pandoc -f docx -t plain
^D
[INFO] Loaded command/chap1/spider.png from ./command/chap1/spider.png
[INFO] Loaded command/chap1/../../lalune.jpg from ./command/chap1/../../lalune.jpg
[INFO] Loaded command/chap2/spider.png from ./command/chap2/spider.png
Chapter one
A spider: [spider]
The moon: [moon]
Link to spider picture.
URL left alone: manual.
Absolute path left alone: absolute.
Chapter two
A spider: [spider]
```
```
% pandoc command/chap1/text.md command/chap2/text.md -f markdown+rebase_relative_paths -t html
^D
<h1 id="chapter-one">Chapter one</h1>
<p>A spider: <img src="command/chap1/spider.png" alt="spider" /></p>
<p>The moon: <img src="command/chap1/../../lalune.jpg" alt="moon" /></p>
<p>Link to <a href="command/chap1/spider.png">spider picture</a>.</p>
<p>URL left alone: <a href="https://pandoc.org/MANUAL.html">manual</a>.</p>
<p>Absolute path left alone: <a href="/foo/bar/baz.png">absolute</a>.</p>
<h1 id="chapter-two">Chapter two</h1>
<p>A spider: <img src="command/chap2/spider.png" alt="spider" /></p>
```
Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

+11
View File
@@ -0,0 +1,11 @@
# Chapter one
A spider: ![spider](spider.png)
The moon: ![moon](../../lalune.jpg)
Link to [spider picture](spider.png).
URL left alone: [manual](https://pandoc.org/MANUAL.html).
Absolute path left alone: [absolute](/foo/bar/baz.png).
Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

+3
View File
@@ -0,0 +1,3 @@
# Chapter two
A spider: ![spider](spider.png)