53 lines
1.1 KiB
Plaintext
53 lines
1.1 KiB
Plaintext
function Out-WordWrap
|
|
{
|
|
[CmdletBinding()]
|
|
[OutputType([string])]
|
|
Param
|
|
(
|
|
[Parameter(Mandatory=$true,
|
|
ValueFromPipeline=$true,
|
|
Position=0)]
|
|
[string]
|
|
$Text,
|
|
|
|
[Parameter(Mandatory=$false,
|
|
Position=1)]
|
|
[ValidateRange(16,160)]
|
|
[int]
|
|
$Width = 80
|
|
)
|
|
|
|
Begin
|
|
{
|
|
function New-WordWrap ([string]$Text, [int]$Width)
|
|
{
|
|
[string[]]$words = $Text.Split()
|
|
[string]$output = ""
|
|
[int]$remaining = $Width
|
|
|
|
foreach ($word in $words)
|
|
{
|
|
if($word.Length + 1 -gt $remaining)
|
|
{
|
|
$output += "`n$word "
|
|
$remaining = $Width - ($word.Length + 1)
|
|
}
|
|
else
|
|
{
|
|
$output += "$word "
|
|
$remaining -= $word.Length + 1
|
|
}
|
|
}
|
|
|
|
return "$output`n"
|
|
}
|
|
}
|
|
Process
|
|
{
|
|
foreach ($paragraph in $Text)
|
|
{
|
|
New-WordWrap -Text $paragraph -Width $Width
|
|
}
|
|
}
|
|
}
|