Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
In case you didn't know, $host gives data about the scripting host, including the window containing the script's output. This in turn gives us the width of the window:
$Host.UI.RawUI.WindowSize.Width
From there, we can
function Break-Line {
# synopsis::
# [-help]
#
# Description::
# Inserts linefeeds into strings read from STDIN so they wrap nicely
# for a given PowerShell window's screen geometry
#
# Usage::
# $data | Break-Line
param (
[switch]$help
);
if ($help) { return (Get-FunctionHelp -name $MyInvocation.MyCommand.Name); }
$width = $Host.UI.RawUI.WindowSize.Width - 1;
$input | % {
$_ = $_ -replace "`t", " ";
foreach ($line in $_.split("`n")) {
$line = $line -replace "\s*$";
$indent = $line -replace "(^\s*).*", '$1';
$line = $line -replace "^\s*";
while ($line.length -gt ($width - $indent.length)) {
$splitPoint = $width - $indent.length;
$buffer = $line.SubString(0, $splitPoint);
$offset = $buffer.lastIndexOf(" ")
if (($offset -ne -1) -and ($offet -ne ($buffer.length -1))) {
$splitPoint = $offset;
$buffer = $line.SubString(0, $splitPoint);
}
$line = $line.SubString($splitPoint, ($line.length - $splitPoint)) -replace "^\s*";
"$indent$buffer";
}
"$indent$line";
}
}
}