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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
| module.exports = function(hljs) {
| var KEYWORDS = {
| keyword:
| 'and elif is global as in if from raise for except finally print import pass return ' +
| 'exec else break not with class assert yield try while continue del or def lambda ' +
| 'async await nonlocal|10',
| built_in:
| 'Ellipsis NotImplemented',
| literal: 'False None True'
| };
| var PROMPT = {
| className: 'meta', begin: /^(>>>|\.\.\.) /
| };
| var SUBST = {
| className: 'subst',
| begin: /\{/, end: /\}/,
| keywords: KEYWORDS,
| illegal: /#/
| };
| var LITERAL_BRACKET = {
| begin: /\{\{/,
| relevance: 0
| };
| var STRING = {
| className: 'string',
| contains: [hljs.BACKSLASH_ESCAPE],
| variants: [
| {
| begin: /(u|b)?r?'''/, end: /'''/,
| contains: [hljs.BACKSLASH_ESCAPE, PROMPT],
| relevance: 10
| },
| {
| begin: /(u|b)?r?"""/, end: /"""/,
| contains: [hljs.BACKSLASH_ESCAPE, PROMPT],
| relevance: 10
| },
| {
| begin: /(fr|rf|f)'''/, end: /'''/,
| contains: [hljs.BACKSLASH_ESCAPE, PROMPT, LITERAL_BRACKET, SUBST]
| },
| {
| begin: /(fr|rf|f)"""/, end: /"""/,
| contains: [hljs.BACKSLASH_ESCAPE, PROMPT, LITERAL_BRACKET, SUBST]
| },
| {
| begin: /(u|r|ur)'/, end: /'/,
| relevance: 10
| },
| {
| begin: /(u|r|ur)"/, end: /"/,
| relevance: 10
| },
| {
| begin: /(b|br)'/, end: /'/
| },
| {
| begin: /(b|br)"/, end: /"/
| },
| {
| begin: /(fr|rf|f)'/, end: /'/,
| contains: [hljs.BACKSLASH_ESCAPE, LITERAL_BRACKET, SUBST]
| },
| {
| begin: /(fr|rf|f)"/, end: /"/,
| contains: [hljs.BACKSLASH_ESCAPE, LITERAL_BRACKET, SUBST]
| },
| hljs.APOS_STRING_MODE,
| hljs.QUOTE_STRING_MODE
| ]
| };
| var NUMBER = {
| className: 'number', relevance: 0,
| variants: [
| {begin: hljs.BINARY_NUMBER_RE + '[lLjJ]?'},
| {begin: '\\b(0o[0-7]+)[lLjJ]?'},
| {begin: hljs.C_NUMBER_RE + '[lLjJ]?'}
| ]
| };
| var PARAMS = {
| className: 'params',
| begin: /\(/, end: /\)/,
| contains: ['self', PROMPT, NUMBER, STRING, hljs.HASH_COMMENT_MODE]
| };
| SUBST.contains = [STRING, NUMBER, PROMPT];
| return {
| aliases: ['py', 'gyp', 'ipython'],
| keywords: KEYWORDS,
| illegal: /(<\/|->|\?)|=>/,
| contains: [
| PROMPT,
| NUMBER,
| // eat "if" prior to string so that it won't accidentally be
| // labeled as an f-string as in:
| { beginKeywords: "if", relevance: 0 },
| STRING,
| hljs.HASH_COMMENT_MODE,
| {
| variants: [
| {className: 'function', beginKeywords: 'def'},
| {className: 'class', beginKeywords: 'class'}
| ],
| end: /:/,
| illegal: /[${=;\n,]/,
| contains: [
| hljs.UNDERSCORE_TITLE_MODE,
| PARAMS,
| {
| begin: /->/, endsWithParent: true,
| keywords: 'None'
| }
| ]
| },
| {
| className: 'meta',
| begin: /^[\t ]*@/, end: /$/
| },
| {
| begin: /\b(print|exec)\(/ // don’t highlight keywords-turned-functions in Python 3
| }
| ]
| };
| };
|
|