22. marraskuu 2010, 22:43

TextPatternille värjäävä koodi

Vähänkään suositummalle CMS-alustalle syntaksia värjäävän kooditoiminnon löytymisen ei pitäisi olla ongelma. No, ei ollutkaan. TextPatternin semantiikkaa etsitään kuitenkin muilta vesiltä kuin omilta. Kuinka typerää.

Ensin pieni rantti suositusta Geshi-värjäystyökalusta, joka on PHP:llä väännetty ratkaisu. Se on ihan kiva sinänsä. Yksi pääohjelma ja sitten plugineina kukin tuettu kieli. Modulaarista ja mukavaa. Mutta mitenkäs käykään, kun joku haluaa kaikille eri syntakseille saman värjäyksen? Geshiläiset PHP-miehet eivät ole tainneet vimiä käytellä, sillä sen nerokas tai vähintään maalaisjärkinen ratkaisu puuttuu kokonaan Geshin ratkaisusta. Oikeastihan värjäysskriptin pitäisi

  1. Antaa kielikohtaisen moduulin päättää, mitä eri tekstielementit (symbolit, avainsanat, …) ovat
  2. Värjätä nämä elementit pääohjelmassa käyttäjän määrittelemillä väreillä. Tällöin voidaan määritellä suoraan kaikkien kielten eri avainsanat vaikka siniseksi ja numerot punaiseksi, kielestä riippumatta.
  3. Bonusta saa määrittelemällä väritykset CSS-luokkina, jotta homma on viimeisen päälle älykkäästi tehty.

Miten Geshi tekee sen? Ihanasti joka kielelle on moduulinsa, jonka sisällä kuitenkin määritellään jokainen väritys. Vieläpä ilman CSS-luokkia. Minun pitäisi siis käsitellä kaikki kielet läpi, jotta saisin yhtenäisen ulkoasun koodilistauksille? Aargh.

E^2^: no, jaksoin lukea vähän FAQ:ia, ja CSS-tyylit onnistuvat hyvin. Sentään se! Nyt enää riittää määritellä globaalit värit näille kaikille. Yksi viriteltävä asia on sentään vielä jäljellä: Geshi ei määritä koodille kuin yhden luokan, joka on kielikohtainen. Joitain älyttömyyksiä on siis paljonkin seassa. En voi globaalisti laittaa kaikkia koodeja tasalevyisiksi, vaan kullekin kielelle erikseen. No, puukotan koodia.

Lisäksi minun pitää muistaa viritellä TextPatternin moottoria siten, että bc-komennon (block code) käyttäminen aktivoi värjäyksen. Ei ole yhtään fiksua, että semanttisuus katoaisi väläyksessä lisäosan takia. Entä jos vuoden päästä haluaisin vaihtaa värjäyskonetta? Joutuisin käymään vanhat postaukset läpi ja manuaalisesti vaihtaa aktivointikomennot, sen sijaan että käyttäisin block code -ympäristöä. TextPattern kaipaisi vähän tämmöistä laajennettavuutta. Huoh, olisikin tuossa tuo uudempi 4.3.0 päivitettävänä, mutta en oikein jaksa lähteä siihen. Saattaa vaikka mikä paukkua.

Tageja:

---
---

---

Aiheen vierestä