File: python_highlighter.py

package info (click to toggle)
gnat-gps 18-5
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 45,716 kB
  • sloc: ada: 362,679; python: 31,031; xml: 9,597; makefile: 1,030; ansic: 917; sh: 264; java: 17
file content (70 lines) | stat: -rw-r--r-- 3,267 bytes parent folder | download
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
from keyword import kwlist

from highlighter.common import region, words, simple, \
    tag_number, tag_block, tag_comment_notes, tag_comment, tag_keyword, \
    hl_inside_strings, tag_type, region_template, tag_string_escapes, \
    tag_string, register_highlighter, hl_comment_notes


hl_format_escapes = simple(r"\{\d+?\}", tag=tag_string_escapes)
string_hl = region_template(tag=tag_string, highlighter=(hl_inside_strings,
                                                         hl_format_escapes))

register_highlighter(
    language="python",
    spec=(
        # Match multiline strings
        string_hl(r'"""', r'"""', name="multiline_string_sq"),
        string_hl(r"'''", r"'''", name="multiline_string_dq"),

        # Match string literals
        string_hl(r"'", r"'|$"),
        string_hl(r'"', r'"|$'),

        # Match comments lines
        region(r"#", "\n", tag=tag_comment, highlighter=(hl_comment_notes,)),

        # Match number literals
        simple(r"\b[0-9]*\.?[0-9]+\b", tag=tag_number),

        # Match keywords
        words(kwlist, tag=tag_keyword),

        # Match self
        simple("self", tag=tag_comment_notes),

        # Match important constants and builtins
        words(["True", "False", "None", "int", "str", "buffer", "unicode",
               "list", "tuple", "bytearray", "xrange", "dict", "Ellipsis",
               "NotImplemented", "__debug__", "__doc__", "__file__",
               "__name__", "__package__"], tag=tag_type),

        words(["__import__", "abs", "all", "any", "apply", "bin", "callable",
               "classmethod", "cmp", "coerce", "compile", "delattr", "dir",
               "divmod", "enumerate", "eval", "execfile", "filter", "format",
               "getattr", "globals", "locals", "hasattr", "hash", "help",
               "hex",
               "id", "input", "intern", "isinstance", "issubclass", "iter",
               "len", "map", "max", "min", "next", "oct", "open", "ord", "pow",
               "property", "range", "xrange", "raw_input", "reduce", "reload",
               "repr", "reversed", "round", "setattr", "slice", "sorted",
               "staticmethod", "sum", "vars", "zip"], tag=tag_block),

        words(
            ["BaseException", "Exception", "StandardError", "ArithmeticError",
             "LookupError", "EnvironmentError", "AssertionError",
             "AttributeError", "BufferError", "EOFError", "FloatingPointError",
             "GeneratorExit", "IOError", "ImportError", "IndexError",
             "KeyError", "KeyboardInterrupt", "MemoryError", "NameError",
             "NotImplementedError", "OSError", "OverflowError",
             "ReferenceError", "RuntimeError", "StopIteration", "SyntaxError",
             "IndentationError", "TabError", "SystemError", "SystemExit",
             "TypeError", "UnboundLocalError", "UnicodeError",
             "UnicodeEncodeError", "UnicodeDecodeError",
             "UnicodeTranslateError", "ValueError", "VMSError", "WindowsError",
             "ZeroDivisionError", "Warning", "UserWarning", "BytesWarning",
             "DeprecationWarning", "PendingDepricationWarning",
             "SyntaxWarning", "RuntimeWarning", "FutureWarning",
             "ImportWarning", "UnicodeWarning"], tag=tag_type)
    )
)