source: node_modules/refractor/lang/dart.js

main
Last change on this file was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 2.7 KB
Line 
1'use strict'
2
3module.exports = dart
4dart.displayName = 'dart'
5dart.aliases = []
6function 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}
Note: See TracBrowser for help on using the repository browser.