Skip to content

Commit 3e906de

Browse files
author
James Brundage
committed
New-PipeScript: Fixing [ScriptBlock] input (#122)
1 parent 9b66ee1 commit 3e906de

File tree

1 file changed

+25
-9
lines changed

1 file changed

+25
-9
lines changed

New-PipeScript.ps1.ps1

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,13 @@ function New-PipeScript
5555
)
5656

5757
begin {
58-
$ParametersToCreate = [Ordered]@{}
59-
$allDynamicParameters = @()
60-
$allBeginBlocks = @()
61-
$allEndBlocks = @()
62-
$allProcessBlocks = @()
63-
$allHeaders = @()
58+
$ParametersToCreate = [Ordered]@{}
59+
$parameterScriptBlocks = @()
60+
$allDynamicParameters = @()
61+
$allBeginBlocks = @()
62+
$allEndBlocks = @()
63+
$allProcessBlocks = @()
64+
$allHeaders = @()
6465
}
6566

6667
process {
@@ -97,12 +98,14 @@ function New-PipeScript
9798
if ($EachParameter.Value.Ast.ParamBlock) {
9899
# embed the parameter block (except for the param keyword)
99100
$EachParameter.Value.Ast.ParamBlock.Extent.ToString() -replace
100-
'^[\s\r\n]param(' -replace ')[\s\r\n]$'
101+
'^[\s\r\n]{0,}param\(' -replace '\)[\s\r\n]{0,}$'
101102
} else {
102103
# Otherwise
104+
'[Parameter(ValueFromPipelineByPropertyName)]' + (
103105
$EachParameter.Value.ToString() -replace
104106
"\`$$($eachParameter.Key)[\s\r\n]$" -replace # Replace any trailing variables
105-
'param()[\s\r\n]{0,}$' # then replace any empty param blocks.
107+
'param\(\)[\s\r\n]{0,}$' # then replace any empty param blocks.
108+
)
106109
}
107110
}
108111
elseif ($EachParameter.Value -is [Object[]]) {
@@ -113,8 +116,16 @@ function New-PipeScript
113116
} elseif ($Parameter -is [string]) {
114117
$ParametersToCreate[$Parameter] = @(
115118
"[Parameter(ValueFromPipelineByPropertyName)]"
116-
"`$$Parameter"
119+
"`$$Parameter"
117120
)
121+
} elseif ($parameter -is [scriptblock]) {
122+
$parameterScriptBlocks +=
123+
if ($parameter.Ast.ParamBlock) {
124+
# embed the parameter block (except for the param keyword)
125+
$parameter
126+
} else {
127+
128+
}
118129
} elseif ($Parameter -is [Object[]]) {
119130
$currentParam = @()
120131
$currentParamName = ''
@@ -176,6 +187,11 @@ function New-PipeScript
176187
[Environment]::NewLine +
177188
')'
178189

190+
if ($parameterScriptBlocks) {
191+
$parameterScriptBlocks += [ScriptBlock]::new($newParamBlock)
192+
$newParamBlock = $parameterScriptBlocks | Join-PipeScript
193+
}
194+
179195

180196
$createdScriptBlock = [scriptblock]::Create("
181197
$($allHeaders -join [Environment]::Newline)

0 commit comments

Comments
 (0)