Plugin Crayon Syntax Highlighter um Syntax für MySQL erweitern
Nachdem ich mich in das Thema WordPress eingearbeitet hatte wollte ich natürlich gleich meinen ersten Beitrag posten. Dabei sollte es um meine erste Erfahrung mit WordPress gehen, dem „nichts geht mehr“ Phänomen. Ich hatte es nämlich nach diversen Installationen und Deinstallationen von Plugins geschafft, dass WordPress meinen Forschungsdrang nur noch mit einem simplen „error“ quittierte.
Ich habe also meinen ersten Beitrag geschrieben und wollte einen MySQL-Code-Schnipsel dann schön mit einem Plugin für Syntax-Highlighter hervorheben. Also machte ich mich auf die Suche nach einem geeigneten Plugin. Nachdem 2-3 Stunden ins Land gestrichen sind und ich ca. 10 verschiedene Plugins installiert und wieder deinstalliert hatte bin ich dann bei dem (für mich) mit Abstand besten Plugin Crayon Syntax Highlighter hängen geblieben.
Wieso dieses Plugin?
Neben den unzähligen Einstellmöglichkeiten, die sich zudem nochmals für jeden Code-Schnipsel individuell anpassen lassen (das alles per schickem Editor) kommt dieses Plugin auch mit vielen Programmiersprachen klar – sogar in einem Code-Schnipsel gemischt. Dieses Plugin hat das Problem mit langen Codezeilen jedoch für mich am besten von allen getesteten Plugins gelöst und bietet hierfür verschiedene Möglichkeiten für den User (siehe Beispiel unten).
Das Problem:
Das Plugin kann extrem viele Programmiersprachen bunt machen, aber ausgerechnet MySQL fehlt. Daher habe ich mich entschlossen eine kleine Erweiterung zu schreiben um das Plugin Crayon Syntax Highlighter um eine Syntax für MySQL zu erweitern.
Die Lösung:
Hier könnt Ihr Euch die Erweiterung herunterladen (selbstverständlich für jeden kostenlos, egal ob es nachher privat oder kommerziell genutzt wird):
mysql-1.0.0.zip (2436 Downloads )Und so „installiert“ Ihr die Erweiterung. Einfach die ZIP-Datei in den Ordner wp-content/plugins/crayon-syntax-highlighter/langs
der WordPress Installation ablegen und in diesen Ordner entpacken.
Oder wenn Ihr keinen SSH Zugriff habt: Einfach die ZIP-Datei lokal entpacken und den Ordner mysql
in eben genannten Ordner kopieren.
Das war es schon, ab da an tauscht „MySQL“ als weitere Sprache im Editor auf.
So sieht MySQL mit der Erweiterung aus:
-- a comment SET NAMES 'utf8'; # another comment DROP TABLE item; DROP DATABASE `shop`; /* * and another comment */ DROP TRIGGER IF EXISTS `trigger_item`; DELIMITER // CREATE TRIGGER `trigger_item` AFTER UPDATE ON `item` FOR EACH ROW BEGIN IF COALESCE(NEW.value, -1) <> COALESCE(OLD.value, -1) THEN INSERT INTO item_log (item_id, old, new, inserted) VALUES (NEW.item_id, OLD.value, NEW.value, NOW()); END IF; END // DELIMITER ; CREATE TABLE `item` ( `item_id` int(8) unsigned NOT NULL AUTO_INCREMENT, `value` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `category` enum('lifestyle', 'it', 'unknown') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'unknown', `inserted` date NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; SELECT i.item_id AS `ItemID`, i.category AS Category, FLOOR(i.category / 100) AS Catalog, CONCAT(i.value, ' ', SUM(r.amount), ' hits') AS `Hits`, DATE_FORMAT(i.inserted, '%d.%m.%Y') AS `Datum`, IF(i.category = 'lifestyle', 'cool', '') AS `Feedback`, IFNULL ( i.category, 'buggy' ) AS CategorySomething -- not nice but works: there should be no whitespace between function name and the bracket FROM item AS i LEFT JOIN rate AS r USE INDEX( -- not nice but works: there should be a whitespace between the reserved word and the bracket idx_item_rate ) ON ( i.item_id = r.item_id AND r.is_active = 1 ) WHERE i.article_id = 12345 AND i.category IN('lifestyle', 'it') AND( i.value IS NOT NULL OR i.inserted > NOW() - INTERVAL 10 HOUR OR HOUR(i.inserted) = 8 OR i.inserted BETWEEN '2013-01-01' AND CURDATE() OR i.value REGEXP "abc" ) GROUP BY `ItemID` HAVING Catalog = 12 ORDER BY Category ASC, `Hits` DESC LIMIT 1 OFFSET 10 ;
Natürlich machen die Anweisungen nicht wirklich Sinn. Es geht hier nur darum die Syntax Hervorhebung zu zeigen.
Update: Der Autor des Plugins Crayon Syntax Highlighter hat in Version 2.4.0 bereits eine erste Erweiterung für MySQL integriert, allerdings fehlen hier noch viele MySQL Schlüsselwörter, Operatoren und Funktionen. Die Farbeinteilung ist (aus meiner Sicht) auch noch nicht optimal gewählt.
Noch muss daher meine Erweiterung manuell eingepflegt werden, damit das Highlighting so wie im Beispiel oben aussieht.
Ich habe jedoch mit dem Autor des Plugins schon Kontakt aufgenommen und dieser wird meine Erweiterung (wahrscheinlich mit dem nächsten Update) direkt ins Plugin integrieren (siehe Githup Commit)
Ich habe die neueste Version vom Crayon Syntax Highlighter installiert, MySQL war da als Sprache nicht dabei.
Dein Plugin funktioniert aber super, danke ;)
Hi Marco,
das freut mich. MySQL sollte inzwischen seit fast einem Jahr zwar standardmäßig im Plugin verfügbar sein, jedoch finde ich die Farbgebung in meiner Version schöner ;)
VG Ansas