Pygments - Wrapper to python pygments library.
Printing some code with a terminal formatter.
use Pygments;
my $code = q:to/ENDCODE/;
grammar Parser {
rule TOP { I <love> <lang> }
token love { '♥' | love }
token lang { < Perl Rust Go Python Ruby > }
}
say Parser.parse: 'I ♥ Perl';
# OUTPUT: 「I ♥ Perl」 love => 「♥」 lang => 「Perl」
say Parser.parse: 'I love Rust';
# OUTPUT: 「I love Rust」 love => 「love」 lang => 「Rust」
ENDCODE
# Output to terminal with line numbers.
Pygments.highlight(
$code, "perl6", :formatter<terminal>,
:linenos(True)
).say;
Also it can be used with Pod::To::HTML
:
use Pygments;
# Set the pod code callback to use pygments before *use* it
my %*POD2HTML-CALLBACKS;
%*POD2HTML-CALLBACKS<code> = sub (:$node, :&default) {
Pygments.highlight($node.contents.join('\n'), "perl6",
:style(Pygments.style('emacs')),
:full)
};
use Pod::To::HTML;
use Pod::Load;
pod2html(load('some.pod6'.IO)).say
Pygments is a wrapper for the pygments python library.
There's no need to instantiate the Pygments
class. All the methods can be called directly.
method highlight(Str $code, $lexer, :$formatter = 'html', *%options)
Highlight the $code
with the lexer passed by paramenter. If no lexer is provided, pygments will try to guess the lexer that will use.
method style(Str $name = 'default')
Get a single style with name $name
method styles
Return a list of all the available themes.
Matias Linares matiaslina@gmail.com
Copyright 2019 Matias Linares
This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.