Markdown-Links interpretieren Klammern in URLs nicht korrekt

Die Diskussion wird fortgesetzt von URLs in Klammern werden nicht zu Links:

Abschnitt 2.3 von RFC2396 besagt:

Nicht reservierte Zeichen können ohne Änderung der Semantik der URI maskiert werden, dies sollte jedoch nicht geschehen, es sei denn, die URI wird in einem Kontext verwendet, der das unmaskierte Zeichen nicht zulässt.

Klammern sind solche Zeichen. Wenn sie in Discourse eingefügt werden, werden URLs, die diese Zeichen verwenden, z. B. in Abfragestrings für die erweiterte Suche in bestimmten Kontexten, falsch interpretiert als Teil der Markdown-URL-Syntax und unbrauchbar gemacht.

Zum Beispiel würde diese URL eine Liste von rechtmäßig hinterlegten Büchern abrufen, die von meiner Vereinigung veröffentlicht wurden:

https://www.depotlegal.be/Depot/form.aspx?SC=KBRVITRINE1#/Search/(query:(AdvancedQuery:(queryGroups:!((queryClauses:!((index:KBR264b_idx,logical:0,operator:0,otherValue:!n,value:‘petites%20singularités’))

Obwohl es beim Einfügen wie oben funktioniert, funktioniert es nicht mehr, wenn es als Markdown-Link verwendet wird:

[Anker](URL) → [Anker](https://www.depotlegal.be/Depot/form.aspx?SC=KBRVITRINE1#/Search/(query:(AdvancedQuery:(queryGroups:!((queryClauses:!((index:KBR264b_idx,logical:0,operator:0,otherValue:!n,value:‘petites%20singularités’))

Darüber hinaus ist wenn eine solche URL per E-Mail empfangen wird, das Ergebnis:

Recherche avancée - Depot)))),ForceSearch:!t,Grid:!n,Page:0,PageRange:3,QueryString:!n,ResultSize:-1,ScenarioCode:KBRVITRINE1,SearchContext:1))

wobei “Recherche avancée - Depot” der korrekt interpretierte Linktitel ist (der klickbar ist) und der Rest Müll ist – und vom klickbaren Link fehlt. (E-Mail ist so eingestellt, dass sie in HTML empfangen wird) Das Neuerstellen von HTML behebt den Link nicht.

Dies scheint eher ein Problem mit der URL und CommonMark zu sein. Wenn Sie die öffnenden und schließenden Klammern ausgleichen, indem Sie )))))) am Ende hinzufügen, wird der Markdown-Link korrekt analysiert.

link

[link](https://www.depotlegal.be/Depot/form.aspx?SC=KBRVITRINE1#/Search/(query:(AdvancedQuery:(queryGroups:!((queryClauses:!((index:KBR264b_idx,logical:0,operator:0,otherValue:!n,value:'petites%20singularit%C3%A9s'))))))))

Dies entspricht dem Verhalten in der CommonMark Spec, der die markdown-it-Engine folgt (verwendet von Discourse).

eine nicht leere Zeichenfolge, die nicht mit < beginnt, keine ASCII-Steuerzeichen oder Leerzeichen enthält und Klammern nur dann enthält, wenn (a) sie mit einem Backslash maskiert sind oder (b) sie Teil eines ausgeglichenen Paares von nicht maskierten Klammern sind. (Implementierungen können die Verschachtelung von Klammern einschränken, um Leistungsprobleme zu vermeiden, aber mindestens drei Verschachtelungsebenen sollten unterstützt werden.)

Dies kann auch im markdown-it Demo getestet werden.

3 „Gefällt mir“

Die Spezifikation scheint ziemlich klar zu sein, der Benutzer kann auch die unausgeglichene Klammer umgehen

[link](https://www.depotlegal.be/Depot/form.aspx?SC=KBRVITRINE1#/Search/\\(query:\\(AdvancedQuery:\\(queryGroups:!\\(\\(queryClauses:!\\(\\(index:KBR264b_idx,logical:0,operator:0,otherValue:!n,value:'petites%20singularit%C3%A9s'\\))\n

wird zu

[link](Recherche avancée - Depot)\n

Da dies wie in der Spezifikation beschrieben funktioniert, verschiebe ich es in die #feature-Diskussion.

4 „Gefällt mir“

Leider werden Klammern meistens nicht ausgeglichen oder maskiert :slight_smile:

Ich glaube, es gibt ein weiteres #bug-Thema dazu Ensure that links containing )) still render and work correctly

1 „Gefällt mir“