123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- 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
- }
- ]
- };
- };
|