Pascal Quelltext - HTML Syntax Highlighting

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
gocher
Beiträge: 298
Registriert: Di 23. Nov 2010, 23:41
OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
CPU-Target: 32Bit/64Bit
Wohnort: Geldern
Kontaktdaten:

Pascal Quelltext - HTML Syntax Highlighting

Beitrag von gocher »

Hallo zusammen,
kennt jemand von Euch eine gute, zuverlässige, kleine und zugleich schnelle Routine um Pascal-Code ein Syntax Highlighting zu verpassen?
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Pascal Quelltext - HTML Syntax Highlighting

Beitrag von corpsman »

Wie wärs mit synedit, das nutzt die IDE auch und funktioniert zuverlässig und schnell.
--
Just try it

martin_frb
Beiträge: 572
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Pascal Quelltext - HTML Syntax Highlighting

Beitrag von martin_frb »

corpsman hat geschrieben:Wie wärs mit synedit, das nutzt die IDE auch und funktioniert zuverlässig und schnell.


SynEdit hat einen HTML exporter.

In Lazarus 1.1 ist das ueber Menu erreichbar

gocher
Beiträge: 298
Registriert: Di 23. Nov 2010, 23:41
OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
CPU-Target: 32Bit/64Bit
Wohnort: Geldern
Kontaktdaten:

Re: Pascal Quelltext - HTML Syntax Highlighting

Beitrag von gocher »

Eigentlich habe ich nach einer kleinen Lösung gesucht, mit der ich in meinem Internet-Auftritt immer den aktuellen Stand der Pascal-Sourcen im Seiteninhalt einbetten kann, also z.B. in einem code-Tag. Meine Website besteht aus einer ISAPI-Extension (DLL) also keine visuelle Anwendung.
Oder gibt es da eine Möglichkeit SynEdit einzusetzen ohne Visuelle Umgebung, also quasi nur zur Konvertierung?
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me

martin_frb
Beiträge: 572
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Pascal Quelltext - HTML Syntax Highlighting

Beitrag von martin_frb »

gocher hat geschrieben:Eigentlich habe ich nach einer kleinen Lösung gesucht, mit der ich in meinem Internet-Auftritt immer den aktuellen Stand der Pascal-Sourcen im Seiteninhalt einbetten kann, also z.B. in einem code-Tag. Meine Website besteht aus einer ISAPI-Extension (DLL) also keine visuelle Anwendung.
Oder gibt es da eine Möglichkeit SynEdit einzusetzen ohne Visuelle Umgebung, also quasi nur zur Konvertierung?


Du brauchst ja keinen vollen SynEdit.

Nur den HtmlExporter, den Highlighter, und den TextBuffer. Theoretisch machbar. Aber aufwendig.
Und dann musst Du das noch selbst in ne DLL mit isapi interface packen....

gocher
Beiträge: 298
Registriert: Di 23. Nov 2010, 23:41
OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
CPU-Target: 32Bit/64Bit
Wohnort: Geldern
Kontaktdaten:

Re: Pascal Quelltext - HTML Syntax Highlighting

Beitrag von gocher »

SynEdit ist ein guter weg :) !
70 Zeilen Code, geht doch, kennt sich jemand mit TSynPasSyn UseUserSettings aus?
Für Delphi gibt es da EnumUserSettings(DelphiVersions: TStrings) gibt eine Schnittstelle zu Lazarus oder am besten eine kleine Doku?
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me

martin_frb
Beiträge: 572
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Pascal Quelltext - HTML Syntax Highlighting

Beitrag von martin_frb »

EnumUserSettings exists, but is not working. Looks like it is supposed to interact with the registry?

Anyway, all properties (settings) that you need a published (can be easily found by opening the source), and the use code-navigation.

Since you are not writing a visual app, you can't use a form to put the SynPasSyn on. But apparently you can use a data module.

Or you can easily set them from code.
SynPasSyn.CommentAttri.Foreground := clBlue.

The names of all attributes are in the Object inspector or components\synedit\synhighlighterpas.pp line 558.

martin_frb
Beiträge: 572
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Pascal Quelltext - HTML Syntax Highlighting

Beitrag von martin_frb »

As I said, you can skip synedit itself. From memory (not tested)

Code: Alles auswählen

FLines := TSynEditStringList.Create;
 
This will be where you put your text (it has a TStrings like interface)
 
   // use highlighter from datamodule
   // OR
   FHighlighter :+ TsysPasSyn.Create(nil)
   // set config
 
// ALways
    FHighlighter.AttachToLines(FLines);
// and at the end (before destroying the lines
    FHighlighter.DettachFromLines(FLines);
 
// Needed once.
// If the highlighter is used by other SynEdit, or with other lines, then needed before *every* access (whenever some other code may have used it)
  FHighlighter.CurrentLines := FLines;
 
// Whenever the text has changed
  FHighlighter.CurrentLines := FLines;
  FHighlighter.ScanRanges;



Thats all, now you should be able to use the HL in the HtmlExporter
Zuletzt geändert von Lori am Mo 18. Jun 2012, 19:22, insgesamt 1-mal geändert.
Grund: Highlighter

gocher
Beiträge: 298
Registriert: Di 23. Nov 2010, 23:41
OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
CPU-Target: 32Bit/64Bit
Wohnort: Geldern
Kontaktdaten:

Re: Pascal Quelltext - HTML Syntax Highlighting

Beitrag von gocher »

Thanks / Danke

läuft auf meiner Homepage http://www.gocher.me/ISAPI-Interface" onclick="window.open(this.href);return false;
  • Geschwindigkeit: ok
  • Ausgabe mit Font-Tags nicht ganz so schön
    kann man aber durch Span-Tags ersetzen und color durch class
    (dazu muss man nur unterschiedliche Farben für alle Typen vergeben), siehe meine Homepage
  • compilierte und mit Strip behandelte Datei vergrößert sich um ca 1,4MB, das ist natürlich erheblich
Zuletzt geändert von gocher am Do 16. Mai 2013, 01:06, insgesamt 1-mal geändert.
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me

martin_frb
Beiträge: 572
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Pascal Quelltext - HTML Syntax Highlighting

Beitrag von martin_frb »

gocher hat geschrieben:Thanks / Danke

läuft auf meiner Homepage http://gocher.dyndns.org/ISAPI-Interface
  • Geschwindigkeit: ok
  • Ausgabe mit Font-Tags nicht ganz so schön
    kann man aber durch Span-Tags ersetzen und color durch class
    (dazu muss man nur unterschiedliche Farben für alle Typen vergeben), siehe meine Homepage
  • compilierte und mit Strip behandelte Datei vergrößert sich um ca 1,4MB, das ist natürlich erheblich



There may be unwanted references to units that in your case are not needed.

Eine hab ich gefunden. Kann aber aus Kompatibilität Gründen nicht entfernen.

Der Exporter (base class) hat eine property Font:TFont. Das bedeuted unit Graphics is used (und alle Decoder png, jpg, bmp, sind per initialization section fest enthalten. Even if smart linking).

Eigentlich braucht der kein Font. Nur default settings fuer Farben und Style....

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: Pascal Quelltext - HTML Syntax Highlighting

Beitrag von Teekeks »

Wie wäre es, einfach den geshi zu nutzen? (http://qbnz.com/highlighter/)

gocher
Beiträge: 298
Registriert: Di 23. Nov 2010, 23:41
OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
CPU-Target: 32Bit/64Bit
Wohnort: Geldern
Kontaktdaten:

Re: Pascal Quelltext - HTML Syntax Highlighting

Beitrag von gocher »

Teekeks hat geschrieben:Wie wäre es, einfach den geshi zu nutzen? (http://qbnz.com/highlighter/)


An meinen Internet Server lasse ich nur Free Pascal :), außerdem ist mir geshi um Code dynamisch in eine Seite einzubetten zu langsam, trotz dem das die Code-Passagen schon in Span-Tags stehen und nicht ersetzt werden müssen. geshi war natürlich mein erster Gedanke, allein schon wegen der Codepassagen in diesem Forum.
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me

gocher
Beiträge: 298
Registriert: Di 23. Nov 2010, 23:41
OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
CPU-Target: 32Bit/64Bit
Wohnort: Geldern
Kontaktdaten:

Re: Pascal Quelltext - HTML Syntax Highlighting

Beitrag von gocher »

Die Klassen TSynPasSyn und TSynExporterHTML benötigen die Units SynHighlighterPas, SynExportHTML und Interfaces.
Diese drei Units ziehen natürlich etliche weitere visuelle Klassen... und für mich überflüssige Units mit hinzu, das abzuändern ist wahrscheinlich zu komplex! Da muss ich wohl später noch mal ran, aber für den Augenblick geht ja.
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Pascal Quelltext - HTML Syntax Highlighting

Beitrag von mschnell »

"Ziehen" der Units schadet doch nichts. Es wird immer nur der Code eingebaut, der auch tatsächlich irgendwo aufgerufen wird.
-Michael

gocher
Beiträge: 298
Registriert: Di 23. Nov 2010, 23:41
OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
CPU-Target: 32Bit/64Bit
Wohnort: Geldern
Kontaktdaten:

Re: Pascal Quelltext - HTML Syntax Highlighting

Beitrag von gocher »

mschnell hat geschrieben:"Ziehen" der Units schadet doch nichts. Es wird immer nur der Code eingebaut, der auch tatsächlich irgendwo aufgerufen wird.
-Michael

Mit hinzu ziehen meine ich, das Ursprungsobjekt des TSynPasSyn ist visuell, also zum Darstellen des Textes angelegt mit Texteigenschaften die über TSynExporterHTML in HTML gewandelt werden. Also so gesagt wird der Code schon gebraucht aber nicht für meinen Zweck zu HTML-Darstellung.

Im eigentlichen wird der Quellcode in einen Editor geladen und über dessen Syntax Highlighting wird der HTML-Code erzeugt und exportiert! Also Optimaler (schneller und kleiner) wäre ein Pascal-Parser der den Code direkt mit HTML-Tags anreichert, aber das ist wieder sehr speziell für diese eine Anwendung gedacht.
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me

Antworten