TIM-JYU / TIM

TIM (The Interactive Material) is an open-source cloud-based platform for creating interactive learning documents.
https://tim.education/view/about/en-US
MIT License
13 stars 4 forks source link

Koodin syntaksin väritys ja rivien/tekstin korostaminen (showCode, markdown) #2309

Open dezhidki opened 3 years ago

dezhidki commented 3 years ago

Tämä on nykyaikaisempi jatko korteille #462 ja #643, sillä nyt on käytössä mm. showPlugin asian hoitamiseksi.

Pandocilla on yksinkertainen koodiparseri, jonka ansiosta se osaa generoida koodin väritykseen tarvittavat HTML-elementit. Tämä onnistuu laittamalla ohjelmointikielen nimen koodilohkon jälkeen:

```csharp
System.Console.WriteLine("Hei, maailma!");


Pandocin parserilla on kuitenkin ongelmansa:

* Se ei tunnista uudempia kieliä, kuten TypeScript tai SCSS
* Se ei tunnista tuttujen kielien uudempia versioita, kuten C# 9 tai ES2020
* Se ei jaa koodia täydellisesti osiin, jolloin tiettyjen sanojen/osien värjäys ei halutessaan onnistu

Syntaksin värityksestä olisi hyötyä ohjelmointikursseilla. Tämän lisäksi koodin parsimisesta olisi hyötyä silloin, kun koodista haluttaisiin värittää yksittäinen rivi tai yksittäinen sana.

Mahdollisia vaihtoehtoja:
1. Päivitetään `showCode`-plugin (#472) siten, että sillä voi värittää rivejä tai sanoja. Lisäksi lisätään showCode-pluginiin mahdollisuus käyttää jotain uudempaa koodiväritysjärjestelmää, kuten [HLJS](https://highlightjs.org/) tai [Prism](https://prismjs.com/).
    * Kummatkin ovat uudet, mutta JavaScript-pohjaiset. Toisaalta kummatkin voidaan ajaa asynkronisesti omassa WebWorkerissa (eli erillisessä säiessä) sivun latautumisen yhteydessä.
2. Muokataan koodin parserointia siten, että koodilohkot ajetaan erillisen koodiparserin läpi Pandocin oman parserin sijaan. Pythonille on esimerkiksi olemassa [Pygments-kirjasto](https://pygments.org/), jolla tämä onnistuisi. showCode-pluginille tehdään vain rivien/sanojen väritykseen tarvittavat apuasetukset.
3. Sekä 1. että 2.
dezhidki commented 2 years ago

unassigned @dezhidki