Permalink
Cannot retrieve contributors at this time
Fetching contributors…
| .. -*- mode: rst -*- | |
| ===================== | |
| The full Pygments API | |
| ===================== | |
| This page describes the Pygments API. | |
| High-level API | |
| ============== | |
| Functions from the `pygments` module: | |
| def `lex(code, lexer):` | |
| Lex `code` with the `lexer` (must be a `Lexer` instance) | |
| and return an iterable of tokens. Currently, this only calls | |
| `lexer.get_tokens()`. | |
| def `format(tokens, formatter, outfile=None):` | |
| Format a token stream (iterable of tokens) `tokens` with the | |
| `formatter` (must be a `Formatter` instance). The result is | |
| written to `outfile`, or if that is ``None``, returned as a | |
| string. | |
| def `highlight(code, lexer, formatter, outfile=None):` | |
| This is the most high-level highlighting function. | |
| It combines `lex` and `format` in one function. | |
| Functions from `pygments.lexers`: | |
| def `get_lexer_by_name(alias, **options):` | |
| Return an instance of a `Lexer` subclass that has `alias` in its | |
| aliases list. The lexer is given the `options` at its | |
| instantiation. | |
| Will raise `pygments.util.ClassNotFound` if no lexer with that alias is | |
| found. | |
| def `get_lexer_for_filename(fn, **options):` | |
| Return a `Lexer` subclass instance that has a filename pattern | |
| matching `fn`. The lexer is given the `options` at its | |
| instantiation. | |
| Will raise `pygments.util.ClassNotFound` if no lexer for that filename is | |
| found. | |
| def `get_lexer_for_mimetype(mime, **options):` | |
| Return a `Lexer` subclass instance that has `mime` in its mimetype | |
| list. The lexer is given the `options` at its instantiation. | |
| Will raise `pygments.util.ClassNotFound` if not lexer for that mimetype is | |
| found. | |
| def `guess_lexer(text, **options):` | |
| Return a `Lexer` subclass instance that's guessed from the text | |
| in `text`. For that, the `analyse_text()` method of every known | |
| lexer class is called with the text as argument, and the lexer | |
| which returned the highest value will be instantiated and returned. | |
| `pygments.util.ClassNotFound` is raised if no lexer thinks it can handle the | |
| content. | |
| def `guess_lexer_for_filename(filename, text, **options):` | |
| As `guess_lexer()`, but only lexers which have a pattern in `filenames` | |
| or `alias_filenames` that matches `filename` are taken into consideration. | |
| `pygments.util.ClassNotFound` is raised if no lexer thinks it can handle the | |
| content. | |
| def `get_all_lexers():` | |
| Return an iterable over all registered lexers, yielding tuples in the | |
| format:: | |
| (longname, tuple of aliases, tuple of filename patterns, tuple of mimetypes) | |
| *New in Pygments 0.6.* | |
| Functions from `pygments.formatters`: | |
| def `get_formatter_by_name(alias, **options):` | |
| Return an instance of a `Formatter` subclass that has `alias` in its | |
| aliases list. The formatter is given the `options` at its | |
| instantiation. | |
| Will raise `pygments.util.ClassNotFound` if no formatter with that alias is | |
| found. | |
| def `get_formatter_for_filename(fn, **options):` | |
| Return a `Formatter` subclass instance that has a filename pattern | |
| matching `fn`. The formatter is given the `options` at its | |
| instantiation. | |
| Will raise `pygments.util.ClassNotFound` if no formatter for that filename | |
| is found. | |
| Functions from `pygments.styles`: | |
| def `get_style_by_name(name):` | |
| Return a style class by its short name. The names of the builtin styles | |
| are listed in `pygments.styles.STYLE_MAP`. | |
| Will raise `pygments.util.ClassNotFound` if no style of that name is found. | |
| def `get_all_styles():` | |
| Return an iterable over all registered styles, yielding their names. | |
| *New in Pygments 0.6.* | |
| Lexers | |
| ====== | |
| A lexer (derived from `pygments.lexer.Lexer`) has the following functions: | |
| def `__init__(self, **options):` | |
| The constructor. Takes a \*\*keywords dictionary of options. | |
| Every subclass must first process its own options and then call | |
| the `Lexer` constructor, since it processes the `stripnl`, | |
| `stripall` and `tabsize` options. | |
| An example looks like this: | |
| .. sourcecode:: python | |
| def __init__(self, **options): | |
| self.compress = options.get('compress', '') | |
| Lexer.__init__(self, **options) | |
| As these options must all be specifiable as strings (due to the | |
| command line usage), there are various utility functions | |
| available to help with that, see `Option processing`_. | |
| def `get_tokens(self, text):` | |
| This method is the basic interface of a lexer. It is called by | |
| the `highlight()` function. It must process the text and return an | |
| iterable of ``(tokentype, value)`` pairs from `text`. | |
| Normally, you don't need to override this method. The default | |
| implementation processes the `stripnl`, `stripall` and `tabsize` | |
| options and then yields all tokens from `get_tokens_unprocessed()`, | |
| with the ``index`` dropped. | |
| def `get_tokens_unprocessed(self, text):` | |
| This method should process the text and return an iterable of | |
| ``(index, tokentype, value)`` tuples where ``index`` is the starting | |
| position of the token within the input text. | |
| This method must be overridden by subclasses. | |
| def `analyse_text(text):` | |
| A static method which is called for lexer guessing. It should analyse | |
| the text and return a float in the range from ``0.0`` to ``1.0``. | |
| If it returns ``0.0``, the lexer will not be selected as the most | |
| probable one, if it returns ``1.0``, it will be selected immediately. | |
| For a list of known tokens have a look at the `Tokens`_ page. | |
| A lexer also can have the following attributes (in fact, they are mandatory | |
| except `alias_filenames`) that are used by the builtin lookup mechanism. | |
| `name` | |
| Full name for the lexer, in human-readable form. | |
| `aliases` | |
| A list of short, unique identifiers that can be used to lookup | |
| the lexer from a list, e.g. using `get_lexer_by_name()`. | |
| `filenames` | |
| A list of `fnmatch` patterns that match filenames which contain | |
| content for this lexer. The patterns in this list should be unique among | |
| all lexers. | |
| `alias_filenames` | |
| A list of `fnmatch` patterns that match filenames which may or may not | |
| contain content for this lexer. This list is used by the | |
| `guess_lexer_for_filename()` function, to determine which lexers are | |
| then included in guessing the correct one. That means that e.g. every | |
| lexer for HTML and a template language should include ``\*.html`` in | |
| this list. | |
| `mimetypes` | |
| A list of MIME types for content that can be lexed with this | |
| lexer. | |
| .. _Tokens: tokens.txt | |
| Formatters | |
| ========== | |
| A formatter (derived from `pygments.formatter.Formatter`) has the following | |
| functions: | |
| def `__init__(self, **options):` | |
| As with lexers, this constructor processes options and then must call | |
| the base class `__init__`. | |
| The `Formatter` class recognizes the options `style`, `full` and | |
| `title`. It is up to the formatter class whether it uses them. | |
| def `get_style_defs(self, arg=''):` | |
| This method must return statements or declarations suitable to define | |
| the current style for subsequent highlighted text (e.g. CSS classes | |
| in the `HTMLFormatter`). | |
| The optional argument `arg` can be used to modify the generation and | |
| is formatter dependent (it is standardized because it can be given on | |
| the command line). | |
| This method is called by the ``-S`` `command-line option`_, the `arg` | |
| is then given by the ``-a`` option. | |
| def `format(self, tokensource, outfile):` | |
| This method must format the tokens from the `tokensource` iterable and | |
| write the formatted version to the file object `outfile`. | |
| Formatter options can control how exactly the tokens are converted. | |
| .. _command-line option: cmdline.txt | |
| A formatter must have the following attributes that are used by the | |
| builtin lookup mechanism. (*New in Pygments 0.7.*) | |
| `name` | |
| Full name for the formatter, in human-readable form. | |
| `aliases` | |
| A list of short, unique identifiers that can be used to lookup | |
| the formatter from a list, e.g. using `get_formatter_by_name()`. | |
| `filenames` | |
| A list of `fnmatch` patterns that match filenames for which this formatter | |
| can produce output. The patterns in this list should be unique among | |
| all formatters. | |
| Option processing | |
| ================= | |
| The `pygments.util` module has some utility functions usable for option | |
| processing: | |
| class `OptionError` | |
| This exception will be raised by all option processing functions if | |
| the type or value of the argument is not correct. | |
| def `get_bool_opt(options, optname, default=None):` | |
| Interpret the key `optname` from the dictionary `options` | |
| as a boolean and return it. Return `default` if `optname` | |
| is not in `options`. | |
| The valid string values for ``True`` are ``1``, ``yes``, | |
| ``true`` and ``on``, the ones for ``False`` are ``0``, | |
| ``no``, ``false`` and ``off`` (matched case-insensitively). | |
| def `get_int_opt(options, optname, default=None):` | |
| As `get_bool_opt`, but interpret the value as an integer. | |
| def `get_list_opt(options, optname, default=None):` | |
| If the key `optname` from the dictionary `options` is a string, | |
| split it at whitespace and return it. If it is already a list | |
| or a tuple, it is returned as a list. | |
| def `get_choice_opt(options, optname, allowed, default=None):` | |
| If the key `optname` from the dictionary is not in the sequence | |
| `allowed`, raise an error, otherwise return it. *New in Pygments 0.8.* |