[d24f17c] | 1 | 'use strict'
|
---|
| 2 |
|
---|
| 3 | module.exports = dart
|
---|
| 4 | dart.displayName = 'dart'
|
---|
| 5 | dart.aliases = []
|
---|
| 6 | function dart(Prism) {
|
---|
| 7 | ;(function (Prism) {
|
---|
| 8 | var keywords = [
|
---|
| 9 | /\b(?:async|sync|yield)\*/,
|
---|
| 10 | /\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|covariant|default|deferred|do|dynamic|else|enum|export|extends|extension|external|factory|final|finally|for|get|hide|if|implements|import|in|interface|library|mixin|new|null|on|operator|part|rethrow|return|set|show|static|super|switch|sync|this|throw|try|typedef|var|void|while|with|yield)\b/
|
---|
| 11 | ] // Handles named imports, such as http.Client
|
---|
| 12 | var packagePrefix = /(^|[^\w.])(?:[a-z]\w*\s*\.\s*)*(?:[A-Z]\w*\s*\.\s*)*/
|
---|
| 13 | .source // based on the dart naming conventions
|
---|
| 14 | var className = {
|
---|
| 15 | pattern: RegExp(packagePrefix + /[A-Z](?:[\d_A-Z]*[a-z]\w*)?\b/.source),
|
---|
| 16 | lookbehind: true,
|
---|
| 17 | inside: {
|
---|
| 18 | namespace: {
|
---|
| 19 | pattern: /^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,
|
---|
| 20 | inside: {
|
---|
| 21 | punctuation: /\./
|
---|
| 22 | }
|
---|
| 23 | }
|
---|
| 24 | }
|
---|
| 25 | }
|
---|
| 26 | Prism.languages.dart = Prism.languages.extend('clike', {
|
---|
| 27 | 'class-name': [
|
---|
| 28 | className,
|
---|
| 29 | {
|
---|
| 30 | // variables and parameters
|
---|
| 31 | // this to support class names (or generic parameters) which do not contain a lower case letter (also works for methods)
|
---|
| 32 | pattern: RegExp(
|
---|
| 33 | packagePrefix + /[A-Z]\w*(?=\s+\w+\s*[;,=()])/.source
|
---|
| 34 | ),
|
---|
| 35 | lookbehind: true,
|
---|
| 36 | inside: className.inside
|
---|
| 37 | }
|
---|
| 38 | ],
|
---|
| 39 | keyword: keywords,
|
---|
| 40 | operator:
|
---|
| 41 | /\bis!|\b(?:as|is)\b|\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?/
|
---|
| 42 | })
|
---|
| 43 | Prism.languages.insertBefore('dart', 'string', {
|
---|
| 44 | 'string-literal': {
|
---|
| 45 | pattern:
|
---|
| 46 | /r?(?:("""|''')[\s\S]*?\1|(["'])(?:\\.|(?!\2)[^\\\r\n])*\2(?!\2))/,
|
---|
| 47 | greedy: true,
|
---|
| 48 | inside: {
|
---|
| 49 | interpolation: {
|
---|
| 50 | pattern:
|
---|
| 51 | /((?:^|[^\\])(?:\\{2})*)\$(?:\w+|\{(?:[^{}]|\{[^{}]*\})*\})/,
|
---|
| 52 | lookbehind: true,
|
---|
| 53 | inside: {
|
---|
| 54 | punctuation: /^\$\{?|\}$/,
|
---|
| 55 | expression: {
|
---|
| 56 | pattern: /[\s\S]+/,
|
---|
| 57 | inside: Prism.languages.dart
|
---|
| 58 | }
|
---|
| 59 | }
|
---|
| 60 | },
|
---|
| 61 | string: /[\s\S]+/
|
---|
| 62 | }
|
---|
| 63 | },
|
---|
| 64 | string: undefined
|
---|
| 65 | })
|
---|
| 66 | Prism.languages.insertBefore('dart', 'class-name', {
|
---|
| 67 | metadata: {
|
---|
| 68 | pattern: /@\w+/,
|
---|
| 69 | alias: 'function'
|
---|
| 70 | }
|
---|
| 71 | })
|
---|
| 72 | Prism.languages.insertBefore('dart', 'class-name', {
|
---|
| 73 | generics: {
|
---|
| 74 | pattern:
|
---|
| 75 | /<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/,
|
---|
| 76 | inside: {
|
---|
| 77 | 'class-name': className,
|
---|
| 78 | keyword: keywords,
|
---|
| 79 | punctuation: /[<>(),.:]/,
|
---|
| 80 | operator: /[?&|]/
|
---|
| 81 | }
|
---|
| 82 | }
|
---|
| 83 | })
|
---|
| 84 | })(Prism)
|
---|
| 85 | }
|
---|