1 | (function (Prism) {
|
2 |
|
3 | var powershell = Prism.languages.powershell = {
|
4 | 'comment': [
|
5 | {
|
6 | pattern: /(^|[^`])<#[\s\S]*?#>/,
|
7 | lookbehind: true
|
8 | },
|
9 | {
|
10 | pattern: /(^|[^`])#.*/,
|
11 | lookbehind: true
|
12 | }
|
13 | ],
|
14 | 'string': [
|
15 | {
|
16 | pattern: /"(?:`[\s\S]|[^`"])*"/,
|
17 | greedy: true,
|
18 | inside: {
|
19 | 'function': {
|
20 |
|
21 | pattern: /(^|[^`])\$\((?:\$\([^\r\n()]*\)|(?!\$\()[^\r\n)])*\)/,
|
22 | lookbehind: true,
|
23 |
|
24 | inside: {}
|
25 | }
|
26 | }
|
27 | },
|
28 | {
|
29 | pattern: /'(?:[^']|'')*'/,
|
30 | greedy: true
|
31 | }
|
32 | ],
|
33 |
|
34 |
|
35 | 'namespace': /\[[a-z](?:\[(?:\[[^\]]*]|[^\[\]])*]|[^\[\]])*]/i,
|
36 | 'boolean': /\$(?:true|false)\b/i,
|
37 | 'variable': /\$\w+\b/,
|
38 |
|
39 |
|
40 |
|
41 | 'function': [
|
42 | /\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\b/i,
|
43 | /\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i
|
44 | ],
|
45 | // per http://technet.microsoft.com/en-us/library/hh847744.aspx
|
46 | 'keyword': /\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,
|
47 | 'operator': {
|
48 | pattern: /(\W?)(?:!|-(?:eq|ne|gt|ge|lt|le|sh[lr]|not|b?(?:and|x?or)|(?:Not)?(?:Like|Match|Contains|In)|Replace|Join|is(?:Not)?|as)\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,
|
49 | lookbehind: true
|
50 | },
|
51 | 'punctuation': /[|{}[\];(),.]/
|
52 | };
|
53 |
|
54 |
|
55 | var stringInside = powershell.string[0].inside;
|
56 | stringInside.boolean = powershell.boolean;
|
57 | stringInside.variable = powershell.variable;
|
58 | stringInside.function.inside = powershell;
|
59 |
|
60 | }(Prism));
|