2009-12-05 12 views
5

Wie Sie wissen, gibt es einen Syntax-Highlighter für PHP namens GeSHi, der eine große Anzahl von Programmiersprachen oder Code-Formaten unterstützt.Syntax Highlighter für Java

Ich konnte jedoch keine solche Bibliothek für Java finden, die Programmiersprachen unterstützt, die ich brauche (ADA, ASP, BNF, Bash, Brainfuck, C, C++, C#, CSS, Cobol, ColdFusion, D, Fortran, Haskell, HTML, INI (Konfig), Java, JavaScript, Lisp, Make, Ziel C, PASCAL, Perl, PHP, PLSQL, Prolog, Python, Ruby, Schema, SQL, VB.NET, Verilog, VHDL, Visual Basic, XML .)

Kennen Sie eine oder sollte ich ineffiziente Weise bevorzugen, die den markierten Code von einem entfernten PHP-Server über http-Transaktion abruft? Irgendwelche Ideen?

Danke.

+0

Meinst du, 'in Java geschrieben'? – bmargulies

Antwort

5

Werfen Sie einen Blick auf JHighlighter oder jEdit Syntax Package. Alle erwähnten Sprachen werden nicht standardmäßig unterstützt. Allerdings haben Sie die Quellen, daher sollte es möglich sein, Sprachunterstützung hinzuzufügen.

keine direkte Antwort, aber wenn clientseitige Syntax-Hervorhebung ist eine Option, die SyntaxHighlighter Bibliothek von Alex Gorbatchev ist eine wunderbare JavaScript-Bibliothek, viele languages unterstützt und ist sehr extensible.

+1

Schöne Links. Vielen Dank. –

+0

Ich bevorzuge die SyntaxHighlighter - funktioniert gut, hält die Arbeit von Server, verringert den Verkehr, lässt den Code intakt für Suchmaschinen. –

+0

@ Ondra Ich stimme Ihnen vollkommen zu. Tatsächlich ist SyntaxHighlighter so großartig, dass es heutzutage zu einer Art De-facto-Standard im Web wurde. –

3

Sie Pygments durch Jython verwenden könnte. Wird nicht so schnell wie eine Java-Lösung, aber viel schneller als die Interaktion mit einem Remote-Server.

Abgesehen davon, können Sie Geshi lokal ausführen und Pipe Quellcode durch, der auch einen HTTP-Umlauf schlagen würde.

+0

Schöne Lösung. Danke. –

0

jedit ist ein Texteditor mit Syntax-Hervorhebung für mehr als 170 Sprachen über "Modi". Sie können auch eigene Syntax angeben. Sie können die StandaloneTextArea Komponente in Ihrer eigenen Anwendung verwenden, wie folgt:

  • Extract Quelle (zB: jedit4.3source.tar.bz2 zu d: \ source \ jedit)
  • Verwenden Ameise alle Textbereich kopieren Dateien .. \ TextArea- zB:

    D: \ Source \ jedit \ jEdit> ant prepare-textarea

  • aber es fehlt die Datei BufferUndoListener.java. Kopieren Sie diese manuell durch Ausführen

    D: \ Source \ jedit \ jEdit> Kopie org \ GJT \ sp \ jedit \ Puffer \ BufferUndoListener.java .. \ textarea \ src \ org \ GJT \ sp \ jedit \ Puffer \

    \ Source \ jedit \ TextArea-

  • Navigieren Sie zu org.gjt.sp.jedit.textarea.StandaloneTextArea:
  • in Eclipse-Java-Projekt aus bestehenden Quelle im Verzeichnis D erstellen.java

  • Ändern Sie die Zeile
mode.setProperty("file","modes/xml.xml"); 

zu

mode.setProperty("file","src/modes/xml.xml"); 
  • Run. Kopieren und fügen Sie ein XML in den Editor ein und sehen Sie, wie die Syntaxhervorhebung funktioniert.
+0

das ist eine nette Idee. Danke. –

0

Ein paar highlighters, die wirklich gut funktionieren, sind:

Beide sind einfach Client-Seite zu implementieren, und eine Vielzahl von Sprachen zu unterstützen. Sie haben auch eine schöne Auswahl an CSS-Themen, die den Code wie in Ihrem Lieblings-Editor aussehen lassen.

1

Es scheint, dass es möglich ist, GeSHi von Java auszuführen: GeSHi4J es scheint ein Wrapper zu sein, die die PHP-Bibliothek auf der JVM ausführen.