Languages/JavaScript/JavaScript-Template-Function.ps.ps1
Template function Function.js { <# .SYNOPSIS Template for a JavaScript `function` .DESCRIPTION Template for a `function` in JavaScript. .EXAMPLE Template.Function.js -Name "Hello" -Body "return 'hello'" #> [Alias('Template.Method.js','Template.Generator.js')] param( # The name of the function. [vbn()] [string] $Name, [vbn()] [Alias('Arguments','Parameter','Parameters')] [string[]] $Argument, # The body of the function. [vbn()] [string[]] $Body, # If set, the function will be marked as async [switch] $Async, # If set, the function will be marked as static [switch] $Static, # If set, the function will be marked as a generator. # This can be implied by calling this with the alias Template.Generator.js [switch] $Generator ) process { if ($body -match '^\{') { $body = $body -replace '^\s{0,}\{' -replace '\}\s{0,}$' } switch -Regex ($MyInvocation.InvocationName) { "generator" { $generator = $true } "function" { @" $(if ($async) { "async "}$(if ($static) {"static "}))function$(if ($generator) { '*'}) $(if ($name) { $name})($($argument -join ',')) { $($Body -join (';' + [Environment]::newLine + ' ')) } "@ break } default { @" $(if ($async) { "async "}$(if ($static) {"static "})) $(if ($name) { $name})$(if ($generator) { '*'})($($argument -join ',')) { $($Body -join (';' + [Environment]::newLine + ' ')) } "@ } } } } |