@@ -6,6 +6,13 @@ function New-PipeScript {
66 Creates new PipeScript and PowerShell ScriptBlocks.
77 . EXAMPLE
88 New-PipeScript -Parameter @{a='b'}
9+ . EXAMPLE
10+ New-PipeScript -Parameter ([Net.HttpWebRequest].GetProperties()) -ParameterHelp @{
11+ Accept='
12+ HTTP Accept.
13+ HTTP Accept indicates what content types the web request will accept as a response.
14+ '
15+ }
916 #>
1017 [Alias (' New-ScriptBlock' )]
1118 param (
@@ -132,7 +139,10 @@ function New-PipeScript {
132139 # The type used for automatically generated parameters.
133140 # By default, ```[PSObject]```.
134141 [type ]
135- $AutoParameterType = [PSObject ]
142+ $AutoParameterType = [PSObject ],
143+ # If provided, will add inline help to parameters.
144+ [Collections.IDictionary ]
145+ $ParameterHelp
136146 )
137147 begin {
138148 $ParametersToCreate = [Ordered ]@ {}
@@ -142,6 +152,19 @@ function New-PipeScript {
142152 $allEndBlocks = @ ()
143153 $allProcessBlocks = @ ()
144154 $allHeaders = @ ()
155+ filter embedParameterHelp {
156+ if ($_ -notmatch ' ^\s\<\#' -and $_ -notmatch ' ^\s\#' ) {
157+ $commentLines = @ ($_ -split ' (?>\r\n|\n)' )
158+ if ($commentLines.Count -gt 1 ) {
159+ ' <#' + [Environment ]::NewLine + " $_ " .Trim() + [Environment ]::newLine + ' #>'
160+ } else {
161+ " # $_ "
162+ }
163+ } else {
164+ $_
165+ }
166+
167+ }
145168 }
146169 process {
147170 if ($parameter ) {
@@ -159,6 +182,9 @@ function New-PipeScript {
159182 $parameterName = $EachParameter.Key
160183 $ParametersToCreate [$EachParameter.Key ] =
161184 @ (
185+ if ($parameterHelp -and $parameterHelp [$eachParameter.Key ]) {
186+ $parameterHelp [$eachParameter.Key ] | embedParameterHelp
187+ }
162188 $parameterAttribute = " [Parameter(ValueFromPipelineByPropertyName)]"
163189 $parameterType
164190 ' $' + $parameterName
@@ -201,6 +227,9 @@ function New-PipeScript {
201227 # treat it as parameter name
202228 $ParametersToCreate [$Parameter ] =
203229 @ (
230+ if ($parameterHelp -and $parameterHelp [$Parameter ]) {
231+ $parameterHelp [$Parameter ] | embedParameterHelp
232+ }
204233 " [Parameter(ValueFromPipelineByPropertyName)]"
205234 " `$ $Parameter "
206235 ) -join [Environment ]::NewLine
@@ -240,6 +269,9 @@ function New-PipeScript {
240269 }
241270 $ParametersToCreate [$prop.Name ] =
242271 @ (
272+ if ($parameterHelp -and $parameterHelp [$prop.Name ]) {
273+ $parameterHelp [$prop.Name ] | embedParameterHelp
274+ }
243275 $parameterAttribute = " [Parameter(ValueFromPipelineByPropertyName)]"
244276 $parameterAttribute
245277 if ($paramType -eq [boolean ]) {
0 commit comments