prism-kotlin.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. (function (Prism) {
  2. Prism.languages.kotlin = Prism.languages.extend('clike', {
  3. 'keyword': {
  4. // The lookbehind prevents wrong highlighting of e.g. kotlin.properties.get
  5. pattern: /(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,
  6. lookbehind: true
  7. },
  8. 'function': [
  9. /\w+(?=\s*\()/,
  10. {
  11. pattern: /(\.)\w+(?=\s*\{)/,
  12. lookbehind: true
  13. }
  14. ],
  15. 'number': /\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,
  16. 'operator': /\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/
  17. });
  18. delete Prism.languages.kotlin["class-name"];
  19. Prism.languages.insertBefore('kotlin', 'string', {
  20. 'raw-string': {
  21. pattern: /("""|''')[\s\S]*?\1/,
  22. alias: 'string'
  23. // See interpolation below
  24. }
  25. });
  26. Prism.languages.insertBefore('kotlin', 'keyword', {
  27. 'annotation': {
  28. pattern: /\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,
  29. alias: 'builtin'
  30. }
  31. });
  32. Prism.languages.insertBefore('kotlin', 'function', {
  33. 'label': {
  34. pattern: /\w+@|@\w+/,
  35. alias: 'symbol'
  36. }
  37. });
  38. var interpolation = [
  39. {
  40. pattern: /\$\{[^}]+\}/,
  41. inside: {
  42. 'delimiter': {
  43. pattern: /^\$\{|\}$/,
  44. alias: 'variable'
  45. },
  46. rest: Prism.languages.kotlin
  47. }
  48. },
  49. {
  50. pattern: /\$\w+/,
  51. alias: 'variable'
  52. }
  53. ];
  54. Prism.languages.kotlin['string'].inside = Prism.languages.kotlin['raw-string'].inside = {
  55. interpolation: interpolation
  56. };
  57. Prism.languages.kt = Prism.languages.kotlin;
  58. Prism.languages.kts = Prism.languages.kotlin;
  59. }(Prism));