123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- /*
- Language: Dart
- Requires: markdown.js
- Author: Maxim Dikun <dikmax@gmail.com>
- Description: Dart a modern, object-oriented language developed by Google. For more information see https://www.dartlang.org/
- Website: https://dart.dev
- Category: scripting
- */
- /** @type LanguageFn */
- function dart(hljs) {
- const SUBST = {
- className: 'subst',
- variants: [{
- begin: '\\$[A-Za-z0-9_]+'
- }]
- };
- const BRACED_SUBST = {
- className: 'subst',
- variants: [{
- begin: /\$\{/,
- end: /\}/
- }],
- keywords: 'true false null this is new super'
- };
- const STRING = {
- className: 'string',
- variants: [
- {
- begin: 'r\'\'\'',
- end: '\'\'\''
- },
- {
- begin: 'r"""',
- end: '"""'
- },
- {
- begin: 'r\'',
- end: '\'',
- illegal: '\\n'
- },
- {
- begin: 'r"',
- end: '"',
- illegal: '\\n'
- },
- {
- begin: '\'\'\'',
- end: '\'\'\'',
- contains: [
- hljs.BACKSLASH_ESCAPE,
- SUBST,
- BRACED_SUBST
- ]
- },
- {
- begin: '"""',
- end: '"""',
- contains: [
- hljs.BACKSLASH_ESCAPE,
- SUBST,
- BRACED_SUBST
- ]
- },
- {
- begin: '\'',
- end: '\'',
- illegal: '\\n',
- contains: [
- hljs.BACKSLASH_ESCAPE,
- SUBST,
- BRACED_SUBST
- ]
- },
- {
- begin: '"',
- end: '"',
- illegal: '\\n',
- contains: [
- hljs.BACKSLASH_ESCAPE,
- SUBST,
- BRACED_SUBST
- ]
- }
- ]
- };
- BRACED_SUBST.contains = [
- hljs.C_NUMBER_MODE,
- STRING
- ];
- const BUILT_IN_TYPES = [
- // dart:core
- 'Comparable',
- 'DateTime',
- 'Duration',
- 'Function',
- 'Iterable',
- 'Iterator',
- 'List',
- 'Map',
- 'Match',
- 'Object',
- 'Pattern',
- 'RegExp',
- 'Set',
- 'Stopwatch',
- 'String',
- 'StringBuffer',
- 'StringSink',
- 'Symbol',
- 'Type',
- 'Uri',
- 'bool',
- 'double',
- 'int',
- 'num',
- // dart:html
- 'Element',
- 'ElementList'
- ];
- const NULLABLE_BUILT_IN_TYPES = BUILT_IN_TYPES.map((e) => `${e}?`);
- const KEYWORDS = {
- keyword: 'abstract as assert async await break case catch class const continue covariant default deferred do ' +
- 'dynamic else enum export extends extension external factory false final finally for Function get hide if ' +
- 'implements import in inferface is late library mixin new null on operator part required rethrow return set ' +
- 'show static super switch sync this throw true try typedef var void while with yield',
- built_in:
- BUILT_IN_TYPES
- .concat(NULLABLE_BUILT_IN_TYPES)
- .concat([
- // dart:core
- 'Never',
- 'Null',
- 'dynamic',
- 'print',
- // dart:html
- 'document',
- 'querySelector',
- 'querySelectorAll',
- 'window'
- ]),
- $pattern: /[A-Za-z][A-Za-z0-9_]*\??/
- };
- return {
- name: 'Dart',
- keywords: KEYWORDS,
- contains: [
- STRING,
- hljs.COMMENT(
- /\/\*\*(?!\/)/,
- /\*\//,
- {
- subLanguage: 'markdown',
- relevance: 0
- }
- ),
- hljs.COMMENT(
- /\/{3,} ?/,
- /$/, {
- contains: [{
- subLanguage: 'markdown',
- begin: '.',
- end: '$',
- relevance: 0
- }]
- }
- ),
- hljs.C_LINE_COMMENT_MODE,
- hljs.C_BLOCK_COMMENT_MODE,
- {
- className: 'class',
- beginKeywords: 'class interface',
- end: /\{/,
- excludeEnd: true,
- contains: [
- {
- beginKeywords: 'extends implements'
- },
- hljs.UNDERSCORE_TITLE_MODE
- ]
- },
- hljs.C_NUMBER_MODE,
- {
- className: 'meta',
- begin: '@[A-Za-z]+'
- },
- {
- begin: '=>' // No markup, just a relevance booster
- }
- ]
- };
- }
- module.exports = dart;
|