|
7 | 7 | Creates new PipeScript and PowerShell ScriptBlocks. |
8 | 8 | .EXAMPLE |
9 | 9 | New-PipeScript -Parameter @{a='b'} |
| 10 | + .EXAMPLE |
| 11 | + New-PipeScript -Parameter ([Net.HttpWebRequest].GetProperties()) -ParameterHelp @{ |
| 12 | + Accept=' |
| 13 | +HTTP Accept. |
| 14 | +
|
| 15 | +HTTP Accept indicates what content types the web request will accept as a response. |
| 16 | +' |
| 17 | + } |
10 | 18 | #> |
11 | 19 | [Alias('New-ScriptBlock')] |
12 | 20 | param( |
|
73 | 81 | # The type used for automatically generated parameters. |
74 | 82 | # By default, ```[PSObject]```. |
75 | 83 | [type] |
76 | | - $AutoParameterType = [PSObject] |
| 84 | + $AutoParameterType = [PSObject], |
| 85 | + |
| 86 | + # If provided, will add inline help to parameters. |
| 87 | + [Collections.IDictionary] |
| 88 | + $ParameterHelp |
77 | 89 | ) |
78 | 90 |
|
79 | 91 | begin { |
|
84 | 96 | $allEndBlocks = @() |
85 | 97 | $allProcessBlocks = @() |
86 | 98 | $allHeaders = @() |
| 99 | + |
| 100 | + filter embedParameterHelp { |
| 101 | + if ($_ -notmatch '^\s\<\#' -and $_ -notmatch '^\s\#') { |
| 102 | + $commentLines = @($_ -split '(?>\r\n|\n)') |
| 103 | + if ($commentLines.Count -gt 1) { |
| 104 | + '<#' + [Environment]::NewLine + "$_".Trim() + [Environment]::newLine + '#>' |
| 105 | + } else { |
| 106 | + "# $_" |
| 107 | + } |
| 108 | + } else { |
| 109 | + $_ |
| 110 | + } |
| 111 | + } |
87 | 112 | } |
88 | 113 |
|
89 | 114 | process { |
|
102 | 127 | $parameterName = $EachParameter.Key |
103 | 128 | $ParametersToCreate[$EachParameter.Key] = |
104 | 129 | @( |
| 130 | + if ($parameterHelp -and $parameterHelp[$eachParameter.Key]) { |
| 131 | + $parameterHelp[$eachParameter.Key] | embedParameterHelp |
| 132 | + } |
105 | 133 | $parameterAttribute = "[Parameter(ValueFromPipelineByPropertyName)]" |
106 | 134 | $parameterType |
107 | 135 | '$' + $parameterName |
|
144 | 172 | # treat it as parameter name |
145 | 173 | $ParametersToCreate[$Parameter] = |
146 | 174 | @( |
| 175 | + if ($parameterHelp -and $parameterHelp[$Parameter]) { |
| 176 | + $parameterHelp[$Parameter] | embedParameterHelp |
| 177 | + } |
147 | 178 | "[Parameter(ValueFromPipelineByPropertyName)]" |
148 | 179 | "`$$Parameter" |
149 | 180 | ) -join [Environment]::NewLine |
|
184 | 215 | } |
185 | 216 | $ParametersToCreate[$prop.Name] = |
186 | 217 | @( |
| 218 | + if ($parameterHelp -and $parameterHelp[$prop.Name]) { |
| 219 | + $parameterHelp[$prop.Name] | embedParameterHelp |
| 220 | + } |
187 | 221 | $parameterAttribute = "[Parameter(ValueFromPipelineByPropertyName)]" |
188 | 222 | $parameterAttribute |
189 | 223 | if ($paramType -eq [boolean]) { |
|
0 commit comments