NAME
Quiq::Html::Pygments - Syntax Highlighting in HTML
BASE CLASS
SYNOPSIS
Modul laden:
use Quiq::Html::Pygments;
Liefere die CSS-Regeln für Pygments-Style 'emacs', eingeschränkt auf einen Container 'highlight', der den gehighlighteten Code aufnimmt:
($rules,$bgColor) = Quiq::Html::Pygments->css('emacs','highlight');
# .highlight .hll { background-color: #ffffcc }
# ...
# #f8f8f8
Erzeuge Syntax-Highlighting für Perl-Code $code. Der gelieferte HTML-Code $html muss in einen Container 'highlight' (s.o.) eingebettet werden, damit die oben erzeugten CSS-Regeln greifen:
$html = Quiq::Html::Pygments->html('perl',$code);
Liefere die Namen aller Pygments-Styles:
@styles = Quiq::Html::Pygments->styles;
Liefere eine HTML-Seite mit einem Darstellungsbeispiel für jeden Pygments-Style. Gehighlightet wird der Code $code der Programmiersprache $lang:
$html = Quiq::Html::Pygments->stylesPage($h,$lang,$code);
DESCRIPTION
Diese Klasse stellt eine Schnittstelle zum Pygments Syntax Highlighting Paket dar, speziell zum Syntax Highlighting in HTML. Die Methoden der Klassen liefern die CSS-Regeln und den HTML-Code, um gehighlighteten Quelltext in HTML-Seiten integrieren zu können.
METHODS
Klassenmethoden
css() - CSS-Information für Highlighting in HTML
Synopsis
($rules,$bgColor) | $rules = $class->css;
($rules,$bgColor) | $rules = $class->css($style);
($rules,$bgColor) | $rules = $class->css($style,$selector);
Arguments
- $style (Default: 'default')
-
Name des Pygments-Style, für den die CSS-Information geliefert wird.
Mögliche Werte: abap, algol, algol_nu, arduino, autumn, borland, bw, colorful, default, emacs, friendly, fruity, igor, lovelace, manni, monokai, murphy, native, paraiso-dark, paraiso-light, pastie, perldoc, rainbow_dash, rrt, tango, trac, vim, vs, xcode.
Die definitiv gültige Liste der Stylenamen liefert die Methode styles().
- $selector (Default: kein zusätzlicher Selektor)
-
Zusätzlicher CSS-Selektor, der den CSS-Regeln vorangestellt wird. Der Selektor schränkt den Gültigkeitsbereich der CSS-Regeln auf ein Parent-Element ein. Ist kein Selektor angegeben, gelten die CSS-Regeln global.
Returns
CSS-Regeln und Hintergrundfarbe (String, String). Im Skalarkontext werden nur die CSS-Regeln geliefert.
Description
Liefere die CSS-Regeln für die Vordergrund-Darstellung von Syntax-Elementen und die zugehörige Hintergrundfarbe für Pygments-Style $style.
Example
Gib die CSS-Regeln für den Pyments-Style 'emacs' aus:
print scalar Quiq::Html::Pygments->css('emacs');
__END__
.hll { background-color: #ffffcc }
.c { color: #008800; font-style: italic } /* Comment */
.err { border: 1px solid #FF0000 } /* Error */
.k { color: #AA22FF; font-weight: bold } /* Keyword */
.o { color: #666666 } /* Operator */
Gib die CSS-Regeln für den Pyments-Style 'emacs' und Parent-Elemente der Klasse 'highlight' aus:
print scalar Quiq::Html::Pygments->css('emacs','.syntax');
__END__
.syntax .hll { background-color: #ffffcc }
.syntax .c { color: #008800; font-style: italic } /* Comment */
.syntax .err { border: 1px solid #FF0000 } /* Error */
.syntax .k { color: #AA22FF; font-weight: bold } /* Keyword */
.syntax .o { color: #666666 } /* Operator */
html() - Quellcode in HTML highlighten
Synopsis
$html = $class->html($lang,$code);
Arguments
- $lang
-
Die Sprache des Quelltexts $code. In Pygments-Terminiologie handelt es sich um den Namen eines "Lexers". Die Liste aller Lexer liefert das Kommando:
$ pygmentize -L lexers
- $code
-
Der Quelltext, der gehighlightet wird.
Returns
HTML-Code mit gehighlightetem Quelltext (String)
Description
Liefere den HTML-Code mit dem Syntax-Highlighting für Quelltext $code der Sprache $lang.
styles() - Liste der Pygments-Styles
Synopsis
@styles | $styleA = $class->styles;
Returns
Liste von Pygments Stylenamen (Array of Strings).
Description
Ermittele die Liste der Namen aller Pygments-Styles und liefere diese zurück. Im Skalarkontext liefere ein Referenz auf die Liste.
Interaktiv lässt sich die (kommentierte) Liste aller Styles ermitteln mit:
$ pygmentize -L styles
stylesPage() - HTML-Seite mit allen Styles
Synopsis
$html = $class->stylesPage($h,$lang,$code);
Arguments
- $h
-
HTML-Generator.
- $lang
-
Die Sprache des Quelltexts $code (siehe auch Methode html()).
- $code
-
Beispiel-Quelltext der Sprache $lang.
Returns
HTML-Seite (String)
Description
Erzeuge für Codebeispiel $code der Sprache (des "Lexers") $lang eine HTML-Seite mit allen Pygments-Styles und liefere diese zurück.
Diese Seite bietet Hilfestellung für die Entscheidung, welcher Style am besten passt.
Example
Generiere eine Seite mit allen Styles und schreibe sie auf Datei $file:
my $h = Quiq::Html::Tag->new;
my $html = Quiq::Html::Pygments->stylesPage($h,'perl',q~
PERL-CODE
~));
Quiq::Path->write($file,$html);
VERSION
1.206
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2022 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.