Linki się ucinają

0

Visual Studio + ReSharper vs JetBrains Rider

Visual Studio + ReSharper vs JetBrains Rider

Jako link wchodzi:
[https://4programmers.net/Forum/C_i_.NET/309754-visual_studio_resharper_vs_jetbrains_rider?p=1483256#id1483256](https://4programmers.net/Forum/C_i_.NET/309754-visual_studio_resharper_vs_jetbrains_rider?p=1483256#id1483256)

underscore psują link, pewnie w parserze trzeba by kolejność zmienić, żeby najpierw parsowało cały link, a dopiero potem inne markupy
Tylko czemu wcina_tylko_pierwsze_underscory_,a resztę zostawia...

To specjalnie tak napisałem, żeby przetestować ;) Jak mamy tekst jednym ciągiem napisany, to underscore różnie się zachowują.

1

Parser markdown widać nie posiada zabezpieczenia pod tym kątem. A że nie jest on dziełem Adama, to pasowałoby zgłosić ten błąd (i ewentualnie inne wykryte) autorom tego parsera.

3

To jest kiepska sprawa. Już wiele razy poprawiałem tego typu linki. Parser markdown ma wbudowane parsowanie linków, ale musiałem je wyłączyć (ze względu na bugi) i napisać własny.

Najpierw parsujemy markdown a potem dopiero linki. Dlaczego? Ponieważ linki nie są parsowane wewnątrz niektórych znaczników - np. <code>, czy <a>, czy <img>. Tak więc przed parsowaniem linków, tymczasowo usuwamy te znaczniki z treści. Innymi słowy: najpierw musimy parsować markdown a potem dopiero linki.

Niestety wybór tego parsera nie był trafiony. Kilka razy zgłaszałem już bugi.

0

@Adam Boduch: a gdyby linki też wycinać przed parsowaniem markdowna?

0

Znalazłem ten temat po tym, jak stworzyłem dziś własny o tym samym. ;) Tak więc tamten skasowałem.

@Adam Boduch: czy to da się zrobić, co proponuje @furious programming?

PS. I nie bardzo rozumiem – napisałeś: "Ponieważ linki nie są parsowane wewnątrz niektórych znaczników". Rozumiem, że masz na myśli parsowanie w zewnętrznym parserze? W takim razie, czy chodzi o to, że z technicznych powodów nie da się tego zrobić, czy po prostu takie jest założenie?

0

@Silv: z technicznego punktu widzenia, nie ma przeszkód aby to wykonać.

Problem polega na tym, że parsowanie treści trzeba rozbić na kilka kroków, bo treść może zawierać znaczniki markdowna, HTML, te customowe (np. [[Delphi/Integer]] jako linki do artykułów kompendium) i bug wie co jeszcze. Do tego dochodzą adresy URL, do których budowy można użyć znaków, które markdown wykorzystuje do formatowania tekstu, dlatego kolejność parsowania jest tutaj kluczowa.

1

Po prostu parser nie powinien ruszać takiej frazy C_i_.NET. IMHO to jest błąd tego parsera ponieważ kursywa w tym przypadku powinna zadziałać w przypadku gdy znak _ poprzedzony oraz zakończony jest spacją. Czyli np. tak: _test_. Przynajmniej tak to działa w innych implementacjach markdown.

3

Tak, problemem jest znak . przed _. Bug zgłoszony autorowi biblioteki.

0

Dziękuję, rozumiem. Cóż, w takim razie musimy po prostu inaczej formatować na razie adresy, póki (ten) parser tak działa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1