Neuigkeiten:

moziloCMS verwendet Cookies. Wenn Sie auf unserer Seite weitersurfen, stimmen Sie der Cookie-Nutzung zu Datenschutzerklärung
moziloCMS Layouts
moziloCMS Plugins

Hauptmenü

Syntax-Highlighting mit "HighLighter"

Begonnen von azett, 11. Oktober 2010, 16:21:50

« vorheriges - nächstes »

azett

Ich habe eben mein neues Plugin "HighLighter" ins Plugin-Archiv hochgeladen.

Das Plugin bindet den freien Syntax-Highlighter GeSHi ins CMS ein, der inzwischen fast 200 Sprachen "bunt machen" kann. Eine detaillierte Plugin-Dokumentation findet sich auf software.azett.com.

Viel Spaß beim Ausprobieren - ich bitte um Feedback :)


mhsob

#1
Wow - cool!
Ist mir nicht wirklich richtig abgegangen (hatte schon ein [code|]-Element definiert), find's aber super toll auf meiner Homepage!
Falls es jemanden interessiert: hier ist übrigens mein code-Element und das "neue" code_high-Element (mir war die Standard-Schrift von HighLighter zu gross und der Codebereich war nicht farblich hinterlegt):
code = <div class="code">{VALUE}</div>
code_high = [code|{HighLighter|{DESCRIPTION}|{VALUE}}]
Aufruf z.B. [code_high=c|irgendein C-Code...].

So sieht div.code in meiner style.css aus:
div.code {
padding:5px;
margin:5px;
font-family:monospace;
background-color:#F0F0F0;
border:1px dotted #B0B0B0;
font-size:0.85em;
line-height: 1.2;
}

HPdesigner

So, ich grab diesen Thread hier nochmal aus. Ich wollte eigentlich gern das HighLighter Plugin für mozilo 2.0 adaptieren, einfach weils super klasse ist den GeSHI in Mozilo zu benutzen. An sich hat das auch geklappt, nur steh ich vor folgendem Problem.

Notiere ich etwas in der Art:
{HighLighter|php|$test = 'string';
$test2 = 'string2';}
funktioniert der Highlighter einwandfrei. Sobald ich allerdings geschweifte oder eckige Klammern im Code habe, und mindestens einen Zeilenumbruch, funktioniert die Ausgabe nicht mehr und er interpretiert das Plugintag nicht mehr. Also z.B.:
{HighLighter|php|$test = 'string';
$test2 = $string2['1'];}


Es hat natürlich irwas mit der Mozilosyntax zu tun, aber ich steh irwie aufm schlauch, wie man das umgeht. Vor allem merkwürdig, dass geschweifte und eckige klammern funktionieren, solang noch kein Zeilenumbruch vorhanden ist...

Hat jmd ne Idee? Ich vermute folgende Zeile (27,28) in der index.php des Plugins muss angepasst werden:
// Plugin-Ersetzungen und Zeilenwechsel normalisieren
$code = str_replace(array('~noplugin_start-', '-noplugin_end~', '-noplugin_grade~', '<br />'), array('{', '}', '|', ''), $code);


lg, HPdesigner
Check my website devmount.de
and find me on Twitter, Medium, GitHub, StackOverflow, Codepen and Slack

hausl78

Versuch mal die [ ] { } zu escapen mittels dem Hochdach ^

{HighLighter|php|$test = 'string';$test2 = $string2^['1'^];}

LG

HPdesigner

Danke hausl78 für den Hinweis, allerdings habe ich vergessen zu erwähnen, dass escapen für mich keine Lösung ist, weil ich teilweise auch längere Codeschnipsel einfügen möchte - und da jedesmal alle Klammern zu escapen ist einfach unmöglich.

Habs natürlich trotzdem getestet - wie erwartet parst er nun das Plugintag, allerdings zeigt er das Hochdach ebenfalls im Code mit an... also{HighLighter|php|$test = "test";
$test1^['1'^] = getSth("blub");}
führt zu der Ausgabe$test = "test";
$test1^['1'^] = getSth("blub");


Weitere Ideen?
Check my website devmount.de
and find me on Twitter, Medium, GitHub, StackOverflow, Codepen and Slack

stefanbe

such mal in der cms/Syntax.php diese zeilen
$syntax_such_rest = "/\[(".implode("=|",$syntax_array)."=|".implode("|",$syntax_array).")([^\|]*)\|(.*)\]/m";
und
$plugin_such_rest = "/\{(".implode("|",$plugin).")\|(.*)\}/m";

und Ändere am Ende das /m"; nach /Ums";

Du wirst aber nicht darum kommen mindestens die {} zu escapen

Da das nee ziemlich Einschneidene Änderung ist wäre es nett wenn Du das möglichst Ausgiebig Testen könntest nicht nur mit dem HighLighter sondern auf möglichts vielen mozilo Instalationen.

Damit ich den Bug Beheben kann.

lg stefanbe

HPdesigner

Vielen Dank für den Hinweis, stefanbe, ich werds sobald wie möglich ausgiebig testen und dann berichten.

Zitat von: stefanbe am 26. August 2013, 23:00:59Du wirst aber nicht darum kommen mindestens die {} zu escapen
Mh, das ist natürlich suboptimal...

Allerdings hat es (ohne Zeilenumbrüche) auch funktioniert, geschweifte Klammern nicht zu escapen, also {HighLighter|php|$test = {test};}führte zur gewünschten Ausgabe. Ist das nur Zufall?
Check my website devmount.de
and find me on Twitter, Medium, GitHub, StackOverflow, Codepen and Slack

stefanbe

da fehlt bestimt das ";" bei der ausgabe  :)

HPdesigner

Nope, das ';' wird ausgegeben - das Plugin macht exakt was es soll!
Check my website devmount.de
and find me on Twitter, Medium, GitHub, StackOverflow, Codepen and Slack

HPdesigner

#9
Zitat von: stefanbe am 27. August 2013, 12:31:19
such mal in der cms/Syntax.php diese zeilen
Ok, ich hab die Zeilen jetzt mal ersetzt, es passiert folgendes in der Ausgabe des Highlighters:

  • Leerzeichen werden zu -html_nbsp~
  • Schließende geschweifte Klammern funktionieren nicht - werden sie mit ^ escaped, sieht man das Hochdach auch in der Ausgabe...
Eckige Klammern funktionieren! Ansonsten hat sich generell am CMS nichts geändert. Zeilenumbrüche und benutzerdefinierte Syntax funktionieren. Die Leerzeichen kann ich im HighLighter Plugin auch abfangen, also hat es auf jeden Fall schon was gebracht!
Check my website devmount.de
and find me on Twitter, Medium, GitHub, StackOverflow, Codepen and Slack

stefanbe

kanste mal die aktuelle mozilo2.0 ausprobieren

lg

HPdesigner

Hab auf die 2.0 auf die aktuelle Version geupdatet - gleiches Resultat. Komischerweise zeigt jetzt auf der Admin-Startseite an, dass mod_rewrite nicht verfügbar ist - das ist aber nicht der Fall (ging ja vorher auch) und es funktioniert auch tadellos...
Check my website devmount.de
and find me on Twitter, Medium, GitHub, StackOverflow, Codepen and Slack

stefanbe

Lösch die .htaccess und admin/.htaccess ruf die install.php bis zum mod_rewrite test auf dann geht das wieder.

lg

HPdesigner

Perfekt, die hatte ich vergessen zu löschen ;) Jetzt klappts. Danke dir!
Jetzt hab ich nur noch das Problem, dass er im HighLighter bei escapten Zeichen das Hochdach mit ausgibt...
Check my website devmount.de
and find me on Twitter, Medium, GitHub, StackOverflow, Codepen and Slack

stefanbe

ändere in der index.php vom Plugin
das
    function getContent($value) {

        global $specialchars;

nach
    function getContent($value) {

        global $specialchars;
        $value = $specialchars->decodeProtectedChr($value);


lg