MediaWiki writer: fix code for generating spans for header IDs.
We need to generate a span when the header's ID doesn't match the one MediaWiki would generate automatically. But MediaWiki's generation scheme is different from ours (it uses uppercase letters, and `_` instead of `-`, for example). This means that in going from markdown -> mediawiki, we'll now get spans before almost every heading, unless explicit identifiers are used that correspond to the ones MediaWiki auto-generates. This is uglier output but it's necessary for internal links to work properly. See #7697.
This commit is contained in:
parent
df5ae1c186
commit
4f2eac88aa
3 changed files with 34 additions and 3 deletions
|
@ -130,7 +130,7 @@ blockToMediaWiki HorizontalRule = return "\n-----\n"
|
||||||
|
|
||||||
blockToMediaWiki (Header level (ident,_,_) inlines) = do
|
blockToMediaWiki (Header level (ident,_,_) inlines) = do
|
||||||
opts <- gets stOptions
|
opts <- gets stOptions
|
||||||
let autoId = uniqueIdent (writerExtensions opts) inlines mempty
|
let autoId = T.replace " " "_" $ stringify inlines
|
||||||
contents <- inlineListToMediaWiki inlines
|
contents <- inlineListToMediaWiki inlines
|
||||||
let eqs = T.replicate level "="
|
let eqs = T.replicate level "="
|
||||||
return $
|
return $
|
||||||
|
|
|
@ -21,7 +21,7 @@ ref to top of this section: [[#refsubpage1|refsubpage1]].
|
||||||
```
|
```
|
||||||
```
|
```
|
||||||
% pandoc -f markdown -t mediawiki
|
% pandoc -f markdown -t mediawiki
|
||||||
# Heading {#heading}
|
# My Heading {#My_Heading}
|
||||||
^D
|
^D
|
||||||
= Heading =
|
= My Heading =
|
||||||
```
|
```
|
||||||
|
|
|
@ -3,24 +3,33 @@ This is a set of tests for pandoc. Most of them are adapted from John Gruber’s
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
<span id="headers"></span>
|
||||||
= Headers =
|
= Headers =
|
||||||
|
|
||||||
|
<span id="level-2-with-an-embedded-link"></span>
|
||||||
== Level 2 with an [[url|embedded link]] ==
|
== Level 2 with an [[url|embedded link]] ==
|
||||||
|
|
||||||
|
<span id="level-3-with-emphasis"></span>
|
||||||
=== Level 3 with ''emphasis'' ===
|
=== Level 3 with ''emphasis'' ===
|
||||||
|
|
||||||
|
<span id="level-4"></span>
|
||||||
==== Level 4 ====
|
==== Level 4 ====
|
||||||
|
|
||||||
|
<span id="level-5"></span>
|
||||||
===== Level 5 =====
|
===== Level 5 =====
|
||||||
|
|
||||||
|
<span id="level-1"></span>
|
||||||
= Level 1 =
|
= Level 1 =
|
||||||
|
|
||||||
|
<span id="level-2-with-emphasis"></span>
|
||||||
== Level 2 with ''emphasis'' ==
|
== Level 2 with ''emphasis'' ==
|
||||||
|
|
||||||
|
<span id="level-3"></span>
|
||||||
=== Level 3 ===
|
=== Level 3 ===
|
||||||
|
|
||||||
with no blank line
|
with no blank line
|
||||||
|
|
||||||
|
<span id="level-2"></span>
|
||||||
== Level 2 ==
|
== Level 2 ==
|
||||||
|
|
||||||
with no blank line
|
with no blank line
|
||||||
|
@ -28,6 +37,7 @@ with no blank line
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
<span id="paragraphs"></span>
|
||||||
= Paragraphs =
|
= Paragraphs =
|
||||||
|
|
||||||
Here’s a regular paragraph.
|
Here’s a regular paragraph.
|
||||||
|
@ -42,6 +52,7 @@ here.
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
<span id="block-quotes"></span>
|
||||||
= Block Quotes =
|
= Block Quotes =
|
||||||
|
|
||||||
E-mail style:
|
E-mail style:
|
||||||
|
@ -71,6 +82,7 @@ And a following paragraph.
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
<span id="code-blocks"></span>
|
||||||
= Code Blocks =
|
= Code Blocks =
|
||||||
|
|
||||||
Code:
|
Code:
|
||||||
|
@ -90,8 +102,10 @@ These should not be escaped: \$ \\ \> \[ \{</pre>
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
<span id="lists"></span>
|
||||||
= Lists =
|
= Lists =
|
||||||
|
|
||||||
|
<span id="unordered"></span>
|
||||||
== Unordered ==
|
== Unordered ==
|
||||||
|
|
||||||
Asterisks tight:
|
Asterisks tight:
|
||||||
|
@ -130,6 +144,7 @@ Minuses loose:
|
||||||
* Minus 2
|
* Minus 2
|
||||||
* Minus 3
|
* Minus 3
|
||||||
|
|
||||||
|
<span id="ordered"></span>
|
||||||
== Ordered ==
|
== Ordered ==
|
||||||
|
|
||||||
Tight:
|
Tight:
|
||||||
|
@ -164,6 +179,7 @@ Multiple paragraphs:
|
||||||
<li><p>Item 2.</p></li>
|
<li><p>Item 2.</p></li>
|
||||||
<li><p>Item 3.</p></li></ol>
|
<li><p>Item 3.</p></li></ol>
|
||||||
|
|
||||||
|
<span id="nested"></span>
|
||||||
== Nested ==
|
== Nested ==
|
||||||
|
|
||||||
* Tab
|
* Tab
|
||||||
|
@ -188,6 +204,7 @@ Same thing but with paragraphs:
|
||||||
#* Foe
|
#* Foe
|
||||||
# Third
|
# Third
|
||||||
|
|
||||||
|
<span id="tabs-and-spaces"></span>
|
||||||
== Tabs and spaces ==
|
== Tabs and spaces ==
|
||||||
|
|
||||||
* this is a list item indented with tabs
|
* this is a list item indented with tabs
|
||||||
|
@ -195,6 +212,7 @@ Same thing but with paragraphs:
|
||||||
** this is an example list item indented with tabs
|
** this is an example list item indented with tabs
|
||||||
** this is an example list item indented with spaces
|
** this is an example list item indented with spaces
|
||||||
|
|
||||||
|
<span id="fancy-list-markers"></span>
|
||||||
== Fancy list markers ==
|
== Fancy list markers ==
|
||||||
|
|
||||||
<ol start="2" style="list-style-type: decimal;">
|
<ol start="2" style="list-style-type: decimal;">
|
||||||
|
@ -239,6 +257,7 @@ B. Williams
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
<span id="definition-lists"></span>
|
||||||
= Definition Lists =
|
= Definition Lists =
|
||||||
|
|
||||||
Tight using spaces:
|
Tight using spaces:
|
||||||
|
@ -307,6 +326,7 @@ Blank line after term, indented marker, alternate markers:
|
||||||
;# sublist
|
;# sublist
|
||||||
;# sublist
|
;# sublist
|
||||||
|
|
||||||
|
<span id="html-blocks"></span>
|
||||||
= HTML Blocks =
|
= HTML Blocks =
|
||||||
|
|
||||||
Simple block on one line:
|
Simple block on one line:
|
||||||
|
@ -416,6 +436,7 @@ Hr’s:
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
<span id="inline-markup"></span>
|
||||||
= Inline Markup =
|
= Inline Markup =
|
||||||
|
|
||||||
This is ''emphasized'', and so ''is this''.
|
This is ''emphasized'', and so ''is this''.
|
||||||
|
@ -445,6 +466,7 @@ These should not be superscripts or subscripts, because of the unescaped spaces:
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
<span id="smart-quotes-ellipses-dashes"></span>
|
||||||
= Smart quotes, ellipses, dashes =
|
= Smart quotes, ellipses, dashes =
|
||||||
|
|
||||||
“Hello,” said the spider. “‘Shelob’ is my name.”
|
“Hello,” said the spider. “‘Shelob’ is my name.”
|
||||||
|
@ -466,6 +488,7 @@ Ellipses…and…and….
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
<span id="latex"></span>
|
||||||
= LaTeX =
|
= LaTeX =
|
||||||
|
|
||||||
*
|
*
|
||||||
|
@ -490,6 +513,7 @@ Here’s a LaTeX table:
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
<span id="special-characters"></span>
|
||||||
= Special Characters =
|
= Special Characters =
|
||||||
|
|
||||||
Here is some unicode:
|
Here is some unicode:
|
||||||
|
@ -545,8 +569,10 @@ Minus: -
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
<span id="links"></span>
|
||||||
= Links =
|
= Links =
|
||||||
|
|
||||||
|
<span id="explicit"></span>
|
||||||
== Explicit ==
|
== Explicit ==
|
||||||
|
|
||||||
Just a [[url/|URL]].
|
Just a [[url/|URL]].
|
||||||
|
@ -567,6 +593,7 @@ Just a [[url/|URL]].
|
||||||
|
|
||||||
[[|Empty]].
|
[[|Empty]].
|
||||||
|
|
||||||
|
<span id="reference"></span>
|
||||||
== Reference ==
|
== Reference ==
|
||||||
|
|
||||||
Foo [[url/|bar]].
|
Foo [[url/|bar]].
|
||||||
|
@ -588,6 +615,7 @@ Foo [[url/|bar]].
|
||||||
|
|
||||||
Foo [[url/|biz]].
|
Foo [[url/|biz]].
|
||||||
|
|
||||||
|
<span id="with-ampersands"></span>
|
||||||
== With ampersands ==
|
== With ampersands ==
|
||||||
|
|
||||||
Here’s a [http://example.com/?foo=1&bar=2 link with an ampersand in the URL].
|
Here’s a [http://example.com/?foo=1&bar=2 link with an ampersand in the URL].
|
||||||
|
@ -598,6 +626,7 @@ Here’s an [[script?foo=1&bar=2|inline link]].
|
||||||
|
|
||||||
Here’s an [[script?foo=1&bar=2|inline link in pointy braces]].
|
Here’s an [[script?foo=1&bar=2|inline link in pointy braces]].
|
||||||
|
|
||||||
|
<span id="autolinks"></span>
|
||||||
== Autolinks ==
|
== Autolinks ==
|
||||||
|
|
||||||
With an ampersand: http://example.com/?foo=1&bar=2
|
With an ampersand: http://example.com/?foo=1&bar=2
|
||||||
|
@ -616,6 +645,7 @@ Auto-links should not occur here: <code><http://example.com/></code>
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
<span id="images"></span>
|
||||||
= Images =
|
= Images =
|
||||||
|
|
||||||
From “Voyage dans la Lune” by Georges Melies (1902):
|
From “Voyage dans la Lune” by Georges Melies (1902):
|
||||||
|
@ -627,6 +657,7 @@ Here is a movie [[File:movie.jpg|movie]] icon.
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
<span id="footnotes"></span>
|
||||||
= Footnotes =
|
= Footnotes =
|
||||||
|
|
||||||
Here is a footnote reference,<ref>Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.</ref> and another.<ref>Here’s the long note. This one contains multiple blocks.
|
Here is a footnote reference,<ref>Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.</ref> and another.<ref>Here’s the long note. This one contains multiple blocks.
|
||||||
|
|
Loading…
Add table
Reference in a new issue