As an alternative to using a hashtable for input, you can use a script block. Here's a script-block-way of doing the same thing as before:
class MyClass -accessibilty:public {
member string S
}
and here's one of many ways of handling it
function class {
param (
[String] $name = $( throw
"name is required" ),
[String] $accessibilty,
[ScriptBlock] $memberScriptBlock = $( throw
"member script block is require" )
)
" $accessibilty class $name {"
& $memberScriptBlock % { " public $($_.declaration)" }
" }"
}
function member {
param (
[String] $type = $( throw
"type is required" ),
[String] $name = $( throw
"name is required" )
)
@{
declaration = "$type $name;"
}
}
What's happening here is that the first word on any line becomes a function, and the remaining words are parameters to that function. So, you're now creating an "internal DSL" in PowerShell. This lets you work in a more idoimatic PowerShell manner.
No comments:
Post a Comment