2010-12-18 4 views
4

Ich habe ein paar Javascript-Programme zum Hinzufügen von Syntax-Highlighting zu Codeblöcken auf einer Seite, aber sie alle diejenigen, die ich gefunden habe setzen erfordern ein Attribut auf dem Codeblock zu sagen Es ist welche Sprache verwendet wird. Ich erzeuge den HTML-Code mit Markdown, also habe ich keine Möglichkeit, diese Attribute zu setzen. Gibt es irgendwelche, die das automatisch tun und kein Attribut brauchen?JavaScript Syntax Highlighter, der gut mit Markdown

Die einzige Art, wie ich an diese Arbeit denken kann, ist mit einer Shebang-Linie;

#!/usr/bin/ruby 
def foo(bar) 
    bar 
end 

Und es wird wissen, es ist Ruby und vielleicht sogar nicht die Shebang-Zeile angezeigt werden (eine shebang für eine oder zwei Linien Fragment aufweist, wird ermüdend).

Ich werde es nicht brauchen, um irgendwelche sehr obskuren Sprachen zu tun, aber es wäre toll, wenn ich leicht neue Definitionen schreiben könnte.

Danke.

Antwort

6

Google Prettifier sollte die Aufgabe erledigen. StackOverflow verwendet es ebenfalls (mit dem von Markdown erzeugten Markup). Er bestimmt die Sprache automatisch.

+0

Ich fragte mich, was SO verwendet, aber ich habe bemerkt, dass meine kurze Codebeispiel nicht Syntaxhervorhebung bekommen. Ich gehe davon aus, dass ein solcher kurzer Codebeispiel nicht ausreicht, um die Sprache eindeutig zu bestimmen. –

+0

@ Jeffrey Aylesworth: Interessant. Das habe ich zuerst nicht bemerkt. Ja, es könnte möglich sein, dass dieses Snippet zu kurz ist. – jwueller

2

Es ist mein Verständnis, dass die Markdown spec auf das Vorliegen von tatsächlichen Markup als Ausweich erlaubt:

Für Markup, die nicht von Markdown-Syntax abgedeckt ist, verwenden Sie einfach HTML selbst. Es ist nicht notwendig, es vorzuschreiben oder es abzugrenzen, um anzuzeigen, dass Sie von Markdown zu HTML wechseln; Sie verwenden Sie einfach die Tags.

Die einzigen Einschränkungen sind, dass HTML-Elemente auf Blockebene - z. <div>, <Tabelle>, <pre>, <p> usw. - müssen von umgebenden Inhalt durch Leerzeilen, und die Start- und End-Tags des Blocks sollte nicht mit Laschen eingekerbt getrennt werden oder Leerzeichen.

Also, wenn Sie einen Syntax-Highlighter haben Sie wirklich wie das nicht automatisch erkennen, können Sie einfach einen wörtlichen <code> Block mit dem entsprechenden Attribute in Ihre Abschriften werfen. Ich denke auch nicht, dass es besonders gegen die Ziele von Markdown verstößt ... es ist ein ziemlich einfacher und lesbarer Indikator.

Es ist möglicherweise auch nicht so schwer, ein eigenes Skript zu erstellen, das zuerst ausgeführt wird, nachdem das DOM bereit ist, Codeblöcke findet und entsprechende Attribute für den Syntax-Highlighter Ihrer Wahl in Abhängigkeit von einigen Heuristiken einfügt für ihren Inhalt, aber wenn da draußen eine Bibliothek ist, die das schon tut, hat das natürlich einige Vorteile. :)

Verwandte Themen