dart.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. module.exports = function (hljs) {
  2. var SUBST = {
  3. className: 'subst',
  4. variants: [
  5. {begin: '\\$[A-Za-z0-9_]+'}
  6. ],
  7. };
  8. var BRACED_SUBST = {
  9. className: 'subst',
  10. variants: [
  11. {begin: '\\${', end: '}'},
  12. ],
  13. keywords: 'true false null this is new super',
  14. };
  15. var STRING = {
  16. className: 'string',
  17. variants: [
  18. {
  19. begin: 'r\'\'\'', end: '\'\'\''
  20. },
  21. {
  22. begin: 'r"""', end: '"""'
  23. },
  24. {
  25. begin: 'r\'', end: '\'',
  26. illegal: '\\n'
  27. },
  28. {
  29. begin: 'r"', end: '"',
  30. illegal: '\\n'
  31. },
  32. {
  33. begin: '\'\'\'', end: '\'\'\'',
  34. contains: [hljs.BACKSLASH_ESCAPE, SUBST, BRACED_SUBST]
  35. },
  36. {
  37. begin: '"""', end: '"""',
  38. contains: [hljs.BACKSLASH_ESCAPE, SUBST, BRACED_SUBST]
  39. },
  40. {
  41. begin: '\'', end: '\'',
  42. illegal: '\\n',
  43. contains: [hljs.BACKSLASH_ESCAPE, SUBST, BRACED_SUBST]
  44. },
  45. {
  46. begin: '"', end: '"',
  47. illegal: '\\n',
  48. contains: [hljs.BACKSLASH_ESCAPE, SUBST, BRACED_SUBST]
  49. }
  50. ]
  51. };
  52. BRACED_SUBST.contains = [
  53. hljs.C_NUMBER_MODE, STRING
  54. ];
  55. var KEYWORDS = {
  56. keyword: 'assert async await break case catch class const continue default do else enum extends false final ' +
  57. 'finally for if in is new null rethrow return super switch sync this throw true try var void while with yield ' +
  58. 'abstract as dynamic export external factory get implements import library operator part set static typedef',
  59. built_in:
  60. // dart:core
  61. 'print Comparable DateTime Duration Function Iterable Iterator List Map Match Null Object Pattern RegExp Set ' +
  62. 'Stopwatch String StringBuffer StringSink Symbol Type Uri bool double int num ' +
  63. // dart:html
  64. 'document window querySelector querySelectorAll Element ElementList'
  65. };
  66. return {
  67. keywords: KEYWORDS,
  68. contains: [
  69. STRING,
  70. hljs.COMMENT(
  71. '/\\*\\*',
  72. '\\*/',
  73. {
  74. subLanguage: 'markdown'
  75. }
  76. ),
  77. hljs.COMMENT(
  78. '///',
  79. '$',
  80. {
  81. subLanguage: 'markdown'
  82. }
  83. ),
  84. hljs.C_LINE_COMMENT_MODE,
  85. hljs.C_BLOCK_COMMENT_MODE,
  86. {
  87. className: 'class',
  88. beginKeywords: 'class interface', end: '{', excludeEnd: true,
  89. contains: [
  90. {
  91. beginKeywords: 'extends implements'
  92. },
  93. hljs.UNDERSCORE_TITLE_MODE
  94. ]
  95. },
  96. hljs.C_NUMBER_MODE,
  97. {
  98. className: 'meta', begin: '@[A-Za-z]+'
  99. },
  100. {
  101. begin: '=>' // No markup, just a relevance booster
  102. }
  103. ]
  104. }
  105. };