Ich verwende eigentlich fast ausschließlich die Firefox-Erweiterung Copy Selected Tabs to Clipboard, um Links zu Websites im Markdown-Format hier in meine Beiträge und Seiten einzufügen. Dabei war mir schon etliche Male aufgefallen, dass bei einigen Links bestimmte Zeichen mit einem überflüssigen \ davor angezeigt wurden, heute z. B. ein Fragezeichen „?“. Bisher habe ich das immer händisch korrigiert, heute aber mal etwas Ursachenforschung betrieben.
Die Firefox-Erweiterung Copy Selected Tabs to Clipboard bietet u. a. das Markdown-Format [%MD_SAFE(%TITLE%)%](%URL% "%MD_LINK_TITLE_SAFE(%TITLE%)%") an, was mich zu https://github.com/piroor/copy-selected-tabs-to-clipboard/blob/7c99166aa40cacb1fec64e586d8e5111f3b9a376/common/commands.js#L429 führt:
// https://github.com/piroor/copy-selected-tabs-to-clipboard/pull/36
export function sanitizeMdText(text) {
return text.replace(/[-!"#$%&'()*+,./:;<=>?@^_`{|}~\[\\\]]/g, '\\$&');
}
// https://github.com/piroor/copy-selected-tabs-to-clipboard/pull/36
export function sanitizeMdLinkTitleText(text) {
return text.replace(/["'()&\\]/g, '\\$&');
}
Dort ist in sanitizeMdText() das Fragezeichen aufgeführt.
Und was macht Datenstrom Yellow: https://github.com/datenstrom/yellow/blob/ea4c7348adda26e065d3d20bf4652418e93f8742/system/workers/markdown.php#L187
/**
* Table of hash values for escaped characters:
* @var string
*/
protected $escape_chars = '\`*_{}[]()>#+-.!';
protected $escape_chars_re;
Hier fehlt also das Fragezeichen in $escape_chars.
Woher nun der Unterschied?
In Pull Request #36 steht u. a.: „CommonMark compliant.“
Aus der CommonMark-Spezifikation:
„Any ASCII punctuation character may be backslash-escaped:“
!
"
#
%
&
'
(
)
*
+
,
-
.
/
:
;
<
=
>
?
@
[
\
]
^
_
`
{
|
}
~
$
(Obiges von mir alphabetisch sortiert)
Aus der originalen Markdown-Syntax-Dokumentation von John Gruber:
„Markdown allows you to use backslash escapes to generate literal characters which would otherwise have special meaning in Markdown’s formatting syntax.
…
Markdown provides backslash escapes for the following characters:“
!
#
(
)
*
+
-
.
[
\
]
_
`
{
}
(Obiges von mir alphabetisch sortiert)
Statt 32 sind es hier nur 15 Zeichen.
Vergleich zwischen beiden Listen mittels Meld:

Über mögliche Lösungen habe ich bislang nicht im Detail nachgedacht, Ideen hätte ich aber ein paar.
Kommentare: 0