fi-ksi / web-backend

Backend for KSI web written in Python.
MIT License
8 stars 3 forks source link

Vlastní tagy se neparsují správně #161

Closed esoadamo closed 1 year ago

esoadamo commented 1 year ago

Viz https://github.com/fi-ksi/web-frontend-angular/issues/40

ItsMACO commented 1 year ago

Parsovacie funkcie máme momentálne iba pre <ksi-collapsible> a <ksi-pseudocode>. Tie sa volajú pred konvertovaním tasku cez pandoc. Tie parsery sú príliš komplexné, toto by bolo super naplánovať na Hackathon so spoločným effortom s frontendom.

BorysekOndrej commented 1 year ago

Problém je komplexnější, než to na první pohled vypadalo. <ksi-tip> nefunguje ani v collapsible bloku, a to ani když do FE dostanu validní HTML.

Ukázky jsou nyní na jedné z úloh další vlny (md, web). Za mě je to tedy minimálně částečně i FE bug.

esoadamo commented 1 year ago

Já se teď na to dívám a vypadá to, že pokud pandoc dostane div, tak to funguje správně. Staré parsery zatím asi modifikovat nebudu, zkusím ale pro ksi-tip (a případné další) vytvořit funkci, která to převede na <div class="ksi-custom ksi-tip">. Vůči tomu by měla být poté úprava FE minimální a mohlo by to fungovat

ItsMACO commented 1 year ago

Ak by to pomohlo, ja som si včera napísal takúto expression (?<=<ksi-tip[^>]*>)(?:\n)*|(?:\n)+(?=<\/ksi-tip>), ktorá by mala byť schopná vybrať prázdne riadky hneď za opening tagom a hneď pred closing tagom ksi-tip-u. Problém však je, že re nepodporuje look-behind ( ?<= v (?<=<ksi-tip[^>]*>) ), ktorý má variabilnú dĺžku ( [^>]* v (?<=<ksi-tip[^>]*>) ). Ak by sa ti to pozdávalo, možno to vieš prepísať.

esoadamo commented 1 year ago

Super, díky! Já teď testuju na kyzikosu fix, vypadá to, že hloupé nahrazení za div-y na BE a pak na FE zase zpět funguje krásně a nic se nerozbíjí :slightly_smiling_face:

Snímek z 2022-07-12 13-02-19

esoadamo commented 1 year ago

https://github.com/fi-ksi/web-backend/commit/517328eaa3a5347b3534b7d50e6d979e4e66add6 Funguje pro samotné ksi-tip, pro ksi-tip vnořené do collapsible bloku se ještě dějí nepravosti někde jinde.

esoadamo commented 1 year ago

TIL: U re.replace je třetí parametr count, ne flags. Takže když napíšete

source = re.sub(fr'<{tag_escaped}(.*?)>', fr'<div class="ksi-custom {tag}"\1>', source, re.IGNORECASE)

tak to nahradí jen první dva výskyty, jelikož re.IGNORECASE == 2.

Každopádně od https://github.com/fi-ksi/web-backend/commit/58ff788e94141ecc78b9fcff0a14f0cbd4462e1a funguje i v collapsible blocích, zavírám tuhle issue jako vyřešenou

BorysekOndrej commented 1 year ago

Parsování asi není opravené správně, nyní nefunguje author, pokud celý blok není uzavřený do ```{=html}. Ukázkou je následující commit v rámci úlohy, kterou jsem odkazoval výše.

https://github.com/fi-naskoc/seminar/pull/32/commits/a86725e15afdb9650ed8cb690e3b74e4deb7e619

Testováno 12.07.2022 16:15 CEST na FE verzi 220712.120930.

esoadamo commented 1 year ago

To je zvláštní, z nějakého důvodu ten atribut něco (asi Pandoc?) přejmenuje. Udělám fix na FE.

<div class="ksi-custom ksi-tip" title="Mějte kreditovou rezervu" data-author="4">
<p>V každém semestru (a obzvláště v tom prvním) si doporučuji zapsat dostatek předmětů, abyste zvládli postoupit do dalšího semestru (&gt;= 20 kreditů) i v případě, že jeden z předmětů nedáte.</p>
</div>
esoadamo commented 1 year ago

@BorysekOndrej mělo by to být OK ve verzi "220712.164758" -- prosím, zkus odstranit {=html} a pokud to bude fungovat, zavři tuto issue

https://github.com/fi-ksi/web-frontend-angular/commit/c41015474e7f120b1cff1ce6091af09dff51c47f

BorysekOndrej commented 1 year ago

Vypadá, že funguje. Díky!