]>
luflow.net public git repositories - flow-web.git/blob - static/highlight/languages/powershell.js
1 /*! `powershell` grammar compiled for Highlight.js 11.11.1 */
3 var hljsGrammar
= ( function () {
8 Description: PowerShell is a task-based command-line shell and scripting language built on .NET.
9 Author: David Mohundro <david@mohundro.com>
10 Contributors: Nicholas Blumhardt <nblumhardt@nblumhardt.com>, Victor Zhou <OiCMudkips@users.noreply.github.com>, Nicolas Le Gall <contact@nlegall.fr>
11 Website: https://docs.microsoft.com/en-us/powershell/
15 function powershell ( hljs
) {
33 // https://docs.microsoft.com/en-us/powershell/scripting/developer/cmdlet/approved-verbs-for-windows-powershell-commands
35 'Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|'
36 + 'Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|'
37 + 'Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|'
38 + 'Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|'
39 + 'ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|'
40 + 'Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|'
41 + 'Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|'
42 + 'Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|'
43 + 'Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|'
44 + 'Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|'
45 + 'Unprotect|Use|ForEach|Sort|Tee|Where' ;
47 const COMPARISON_OPERATORS
=
48 '-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|'
49 + '-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|'
50 + '-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|'
51 + '-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|'
52 + '-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|'
53 + '-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|'
54 + '-split|-wildcard|-xor' ;
57 $ pattern : /-?[A-z\.\-]+\b/ ,
59 'if else foreach return do while until elseif begin for trap data dynamicparam '
60 + 'end break throw param continue finally in switch exit filter try process catch '
61 + 'hidden static parameter' ,
62 // "echo" relevance has been set to 0 to avoid auto-detect conflicts with shell transcripts
64 'ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp '
65 + 'cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx '
66 + 'fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group '
67 + 'gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi '
68 + 'iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh '
69 + 'popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp '
70 + 'rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp '
71 + 'spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write'
72 // TODO: 'validate[A-Z]+' can't work in keywords
75 const TITLE_NAME_RE
= /\w[\w\d]*((-)[\w\d]+)*/ ;
77 const BACKTICK_ESCAPE
= {
83 className : 'variable' ,
90 { begin : /\$[\w\d][\w\d_:]*/ }
96 begin : /\$(null|true|false)\b/
99 const QUOTE_STRING
= {
115 className : 'variable' ,
122 const APOS_STRING
= {
136 const PS_HELPTAGS
= {
139 /* no paramater help tags */
140 { begin : /\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/ },
141 /* one parameter help tags */
142 { begin : /\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/ }
146 const PS_COMMENT
= hljs
. inherit (
147 hljs
. COMMENT ( null , null ),
150 /* single-line comment */
155 /* multi-line comment */
161 contains : [ PS_HELPTAGS
]
166 className : 'built_in' ,
167 variants : [ { begin : '(' . concat ( VALID_VERBS
, ')+(-)[ \\ w \\ d]+' ) } ]
172 beginKeywords : 'class enum' ,
176 contains : [ hljs
. TITLE_MODE
]
179 const PS_FUNCTION
= {
180 className : 'function' ,
181 begin : /function\s+/ ,
194 begin : TITLE_NAME_RE
,
208 // Using statment, plus type, plus assembly name.
217 className : 'keyword' ,
218 begin : /(using|assembly|command|module|namespace|type)/
223 // Comperison operators & function named parameters.
224 const PS_ARGUMENTS
= { variants : [
225 // PS literals are pretty verbose so it's a good idea to accent them a bit.
227 className : 'operator' ,
228 begin : '(' . concat ( COMPARISON_OPERATORS
, ') \\ b' )
231 className : 'literal' ,
232 begin : /(-){1,2}[\w\d-]+/ ,
238 className : 'selector-tag' ,
243 // It's a very general rule so I'll narrow it a bit with some strict boundaries
244 // to avoid any possible false-positive collisions!
246 className : 'function' ,
247 begin : /\[.*\]\ s
*[\ w
]+[ ]??\(/,
253 className : 'keyword' ,
255 KEYWORDS
. keyword
. toString (). replace ( /\s/g , '|'
260 hljs
. inherit ( hljs
. TITLE_MODE
, { endsParent : true })
264 const GENTLEMANS_SET
= [
272 // PS_NEW_OBJECT_TYPE,
289 begin : "(" + TYPES
. join ( "|" ) + ")" ,
290 className : "built_in" ,
301 PS_METHODS
. contains
. unshift ( PS_TYPE
);
310 case_insensitive : true ,
312 contains : GENTLEMANS_SET
. concat (
326 hljs
. registerLanguage ( 'powershell' , hljsGrammar
);