Zum Inhalt

Code Beautification I (Syntax Highlighting)

Aufgrund eigenen Bedürfnisses, das durch einen Kommentar an anderer Stelle durch Marcello noch verstärkt wurde, habe ich mir heute mal erste Gedanken zum Thema Syntax Highlighting oder Code-Darstellungsverschönerung gemacht. Es geht um die Zeilen Code, die ich hier im WeBlog veröffentliche. Befehle, Methoden, Eigenschaften und dergleichen sollen farblich hervorgehoben werden, um die Lesbarkeit zu erhöhen.

Mein erster Versuch ist mega-unelegant, selbst für einen PHP-Neuling wie mich, und zeitigt auch nicht das gewünschte Ergebnis. Im wesentlichen habe ich in einem Array die Keywords abgelegt, die gehighlighted werden sollen (z.B. onClipEvent oder _xmouse), und im einem zweiten Array den jeweiligen Ersatzstring (z.B. [font color=“#0000FF“] onClipEvent [/font]; HTML-Tag-Klammern ersetzt, da sie sonst hier im WeBlog geparst werden).

Auszug:

Mittels str_replace lasse ich dann den an die Funktion beautify ($uglytext)  als String übergebenen „hässlichen“ Code durchlaufen und die Keywords ersetzen:

Die meisten Keywords werden auch wie gewünscht ersetzt, doch eben nicht alle, und das Ergebnis zeigt mir auch, dass die Sache nicht ganz so einfach ist. Ein Beispiel sei genannt: Die beiden Eigenschaften _xmouse und _x werden auch ersetzt – <font color=“#00FFFF“>_x</font>mouse.

Also nur zur Hälfte. Warum? Weil ich in meinem jugendlichen Leichtsinn VOR dem _xmouse-Ersatzstring einen für die Eigenschaft _x im Array definiert habe. Wenn also ein paar Millisekunden nach _xmouse gesucht wird, wird es nicht mehr gefunden, weil es bereits in [HTML]_x[HTML]mouse umgewandelt worden ist.

Gut, Reihenfolge umzudrehen – lange Versionen nach oben – wäre eine Lösung dafür. Aber das ganze Skript ist viel zu lang und plump. Deswegen schaue ich mir jetzt das Thema Reguläre Ausdrücke mal genauer an. Wenn bis 2300 noch etwas dabei herauskommt, landet das Skript hier im WeBlog. Ansonsten manjana… 🙂

Veröffentlicht inAllgemein
Loading Facebook Comments ...

Schreibe den ersten Kommentar

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.


Warning: Declaration of sk2_rbl_plugin::treat_this($cmt_object) should be compatible with sk2_plugin::treat_this(&$cmt_object) in /www/htdocs/w00e0042/christianscholz.com/wp-content/plugins/SK2/sk2_plugins/sk2_rbl_plugin.php on line 342

Warning: Declaration of sk2_captcha_plugin::output_plugin_UI() should be compatible with sk2_plugin::output_plugin_UI($output_dls = true) in /www/htdocs/w00e0042/christianscholz.com/wp-content/plugins/SK2/sk2_plugins/sk2_captcha_plugin.php on line 70

Warning: Declaration of sk2_pjw_simpledigest::output_plugin_UI() should be compatible with sk2_plugin::output_plugin_UI($output_dls = true) in /www/htdocs/w00e0042/christianscholz.com/wp-content/plugins/SK2/sk2_plugins/sk2_pjw_daily_digest_plugin.php on line 277

Warning: Declaration of sk2_referrer_check_plugin::output_plugin_UI() should be compatible with sk2_plugin::output_plugin_UI($output_dls = true) in /www/htdocs/w00e0042/christianscholz.com/wp-content/plugins/SK2/sk2_plugins/sk2_referrer_check_plugin.php on line 78