The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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

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.