1 |
|
2 |
|
3 |
|
4 | Prism.languages.stata = {
|
5 | 'comment': [
|
6 | {
|
7 | pattern: /(^[ \t]*)\*.*/m,
|
8 | lookbehind: true,
|
9 | greedy: true
|
10 | },
|
11 | {
|
12 | pattern: /(^|\s)\/\/.*|\/\*[\s\S]*?\*\//,
|
13 | lookbehind: true,
|
14 | greedy: true
|
15 | }
|
16 | ],
|
17 | 'string-literal': {
|
18 | pattern: /"[^"\r\n]*"|[‘`']".*?"[’`']/,
|
19 | greedy: true,
|
20 | inside: {
|
21 | 'interpolation': {
|
22 | pattern: /\$\{[^{}]*\}|[‘`']\w[^’`'\r\n]*[’`']/,
|
23 | inside: {
|
24 | 'punctuation': /^\$\{|\}$/,
|
25 | 'expression': {
|
26 | pattern: /[\s\S]+/,
|
27 | inside: null
|
28 | }
|
29 | }
|
30 | },
|
31 | 'string': /[\s\S]+/
|
32 | }
|
33 | },
|
34 |
|
35 | 'mata': {
|
36 | pattern: /(^[ \t]*mata[ \t]*:)[\s\S]+?(?=^end\b)/m,
|
37 | lookbehind: true,
|
38 | greedy: true,
|
39 | alias: 'language-mata',
|
40 | inside: Prism.languages.mata
|
41 | },
|
42 | 'java': {
|
43 | pattern: /(^[ \t]*java[ \t]*:)[\s\S]+?(?=^end\b)/m,
|
44 | lookbehind: true,
|
45 | greedy: true,
|
46 | alias: 'language-java',
|
47 | inside: Prism.languages.java
|
48 | },
|
49 | 'python': {
|
50 | pattern: /(^[ \t]*python[ \t]*:)[\s\S]+?(?=^end\b)/m,
|
51 | lookbehind: true,
|
52 | greedy: true,
|
53 | alias: 'language-python',
|
54 | inside: Prism.languages.python
|
55 | },
|
56 |
|
57 |
|
58 | 'command': {
|
59 | pattern: /(^[ \t]*(?:\.[ \t]+)?(?:(?:bayes|bootstrap|by|bysort|capture|collect|fmm|fp|frame|jackknife|mfp|mi|nestreg|noisily|permute|quietly|rolling|simulate|statsby|stepwise|svy|version|xi)\b[^:\r\n]*:[ \t]*|(?:capture|noisily|quietly|version)[ \t]+)?)[a-zA-Z]\w*/m,
|
60 | lookbehind: true,
|
61 | greedy: true,
|
62 | alias: 'keyword'
|
63 | },
|
64 | 'variable': /\$\w+|[‘`']\w[^’`'\r\n]*[’`']/,
|
65 | 'keyword': /\b(?:bayes|bootstrap|by|bysort|capture|clear|collect|fmm|fp|frame|if|in|jackknife|mi[ \t]+estimate|mfp|nestreg|noisily|of|permute|quietly|rolling|simulate|sort|statsby|stepwise|svy|varlist|version|xi)\b/,
|
66 |
|
67 |
|
68 | 'boolean': /\b(?:off|on)\b/,
|
69 | 'number': /\b\d+(?:\.\d+)?\b|\B\.\d+/,
|
70 | 'function': /\b[a-z_]\w*(?=\()/i,
|
71 |
|
72 | 'operator': /\+\+|--|##?|[<>!=~]=?|[+\-*^&|/]/,
|
73 | 'punctuation': /[(){}[\],:]/
|
74 | };
|
75 |
|
76 | Prism.languages.stata['string-literal'].inside.interpolation.inside.expression.inside = Prism.languages.stata;
|