textile-zorgen

De site van Openminds gebruikt Textpattern als onderliggend systeem. Vandaag wilde ik een posting doen die gebruik maakte van een extra plugin, om syntax highlighting te doen op stukjes code (inline of uit een file). Om korte stukjes code (1 tot 10 regels) telkens in een bestandje te zetten, is wat al te idioot, en dus gebruik ik gewoon de inline-syntax (je zet de code tussen de open en sluit-tags).

Aangezien de code wat vreemde karakters bevat, zoals een underscore, ampersands, spoorwegtekens en vele andere leuke zaken, moet ik de code omsluiten met “notextile”-tags, zodat de tekst niet door de textile engine omgevormd wordt. Vreemd genoeg werkt dit gewoonweg niet. De textile-engine gaat nog altijd vervangingen doen in de tekst tussen de “notextile”-tags; wat een beetje het doel van de notextile-tag voorbijschiet.

Lang leve open source, en dus maar even in de classTextile.php gaan rondneuzen. Man, wat een soep. Man, wat een smerige parser. Deze parser gaat enkele zaken sequentieel gaan toepassen, zoals de functie “notextile”, daarna de functie “links”, waarna “image” aan de beurt komt, enzovoort. De uitvoer van elke functie is de invoer van de volgende.

Er zijn enkele functies die na de noTextile functie komen die intern zich gewaar zijn van de notextile tags, maar er zijn er ook die er zich gewoon niets van aantrekken, en vlot aan het vervangen slaan. Zo worden de single quotes aangepast zodat er mooie openende en sluitende quotes gebruikt worden. Beter is het ampersand-teken. Eer eender wat gebeurt, gaat elke ampersand die niet deel uitmaakt van een html-entity vervangen door een wachtkarakter, en op het eind, na elke mogelijke functie, wordt diit wacchtkarakter terug vervangen door een ampersand. Echter, niet gewoon door het teken ‘&’, maar door ‘&’. Stukken code, tussen notextilize-tags hebben ineen geen “if(iets && iets_anders)…” meer, maar die && is gewoon vervangen door 2 keer de string “&”.

Frustrerend.

3 Responses to “textile-zorgen”

  1. Wolf Says:

    Ik zoek een goed systeem om code snippets te kunnen tonen in WordPress zonder die entities zelf te moeten schrijven – any clue :) ?

  2. blonko Says:

    Op http://random.openminds.be gebruiken wij de plugin http://erik.range-it.de/wordpress/plugins/syntaxhighlighter/ die goed werkt. Zie enkele postings daar voor enkele voorbeelden.

  3. blonko Says:

    Voor de textile problemen heb ik onder andere al een bondgenoot gevonden op http://kelvinluck.com/article/hacking-txp-into-submission, met een gedeeltelijke oplossing, maar het is nog niet helemaal correct. Zelf heb ik nog enkele kleine andere aanpassingen gedaan.

Leave a Reply