python.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /*
  2. Language: Python
  3. Category: common
  4. */
  5. function(hljs) {
  6. var PROMPT = {
  7. className: 'meta', begin: /^(>>>|\.\.\.) /
  8. };
  9. var STRING = {
  10. className: 'string',
  11. contains: [hljs.BACKSLASH_ESCAPE],
  12. variants: [
  13. {
  14. begin: /(u|b)?r?'''/, end: /'''/,
  15. contains: [PROMPT],
  16. relevance: 10
  17. },
  18. {
  19. begin: /(u|b)?r?"""/, end: /"""/,
  20. contains: [PROMPT],
  21. relevance: 10
  22. },
  23. {
  24. begin: /(u|r|ur)'/, end: /'/,
  25. relevance: 10
  26. },
  27. {
  28. begin: /(u|r|ur)"/, end: /"/,
  29. relevance: 10
  30. },
  31. {
  32. begin: /(b|br)'/, end: /'/
  33. },
  34. {
  35. begin: /(b|br)"/, end: /"/
  36. },
  37. hljs.APOS_STRING_MODE,
  38. hljs.QUOTE_STRING_MODE
  39. ]
  40. };
  41. var NUMBER = {
  42. className: 'number', relevance: 0,
  43. variants: [
  44. {begin: hljs.BINARY_NUMBER_RE + '[lLjJ]?'},
  45. {begin: '\\b(0o[0-7]+)[lLjJ]?'},
  46. {begin: hljs.C_NUMBER_RE + '[lLjJ]?'}
  47. ]
  48. };
  49. var PARAMS = {
  50. className: 'params',
  51. begin: /\(/, end: /\)/,
  52. contains: ['self', PROMPT, NUMBER, STRING]
  53. };
  54. return {
  55. aliases: ['py', 'gyp'],
  56. keywords: {
  57. keyword:
  58. 'and elif is global as in if from raise for except finally print import pass return ' +
  59. 'exec else break not with class assert yield try while continue del or def lambda ' +
  60. 'async await nonlocal|10 None True False',
  61. built_in:
  62. 'Ellipsis NotImplemented'
  63. },
  64. illegal: /(<\/|->|\?)|=>/,
  65. contains: [
  66. PROMPT,
  67. NUMBER,
  68. STRING,
  69. hljs.HASH_COMMENT_MODE,
  70. {
  71. variants: [
  72. {className: 'function', beginKeywords: 'def'},
  73. {className: 'class', beginKeywords: 'class'}
  74. ],
  75. end: /:/,
  76. illegal: /[${=;\n,]/,
  77. contains: [
  78. hljs.UNDERSCORE_TITLE_MODE,
  79. PARAMS,
  80. {
  81. begin: /->/, endsWithParent: true,
  82. keywords: 'None'
  83. }
  84. ]
  85. },
  86. {
  87. className: 'meta',
  88. begin: /^[\t ]*@/, end: /$/
  89. },
  90. {
  91. begin: /\b(print|exec)\(/ // don’t highlight keywords-turned-functions in Python 3
  92. }
  93. ]
  94. };
  95. }