summaryrefslogtreecommitdiff
path: root/README.md
blob: 24288aa8aee4b651370b78ccf75e8b95d907d2a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
NAME
====

Pygments - Wrapper to python pygments library.

SYNOPSIS
========

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

DESCRIPTION
===========

Pygments is a wrapper for the [pygments](http://pygments.org) python library.

METHODS
=======

There's no need to instantiate the `Pygments` class. All the methods can be called directly.

highlight
---------

    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.

style
-----

    method style(Str $name = 'default')

Get a single style with name `$name`

styles
------

    method styles

Return a list of all the available themes.

AUTHOR
======

Matias Linares <matiaslina@gmail.com>

COPYRIGHT AND LICENSE
=====================

Copyright 2019 Matias Linares

This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.