NAME

Quiq::Html::Pygments - Syntax Highlighting in HTML

BASE CLASS

Quiq::Hash

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.135

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2019 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.