Private/Output/Header/GetHeaderTable.ps1
function Get-HeaderTable { [CmdletBinding()] param( [bool]$DisplayCreationDate, [bool]$DisplayLastAccessDate, [bool]$DisplayModificationDate, [bool]$DisplaySize, [bool]$DisplayMode, [hashtable]$LineStyle ) $headerTable = @{ Indentations = @{} HeaderLine = "" UnderscoreLine = "" HeaderColumns = @() } $regularSpacing = " " $headerConfigs = @( @{ Condition = $DisplayMode HeaderString = "Mode" ExtraSpacing = " " }, @{ Condition = $DisplayCreationDate HeaderString = "Creation Date" ExtraSpacing = " " * ("Modification Date".Length - "Creation Date".Length) }, @{ Condition = $DisplayLastAccessDate HeaderString = "Last Access Date" ExtraSpacing = " " * ("Modification Date".Length - "Last Access Date".Length) }, @{ Condition = $DisplayModificationDate HeaderString = "Modification Date" ExtraSpacing = "" }, @{ Condition = $DisplaySize HeaderString = "Size" ExtraSpacing = " " } ) # Add headers based on display flags foreach ($config in $headerConfigs) { if ($config.Condition) { $headerString = $config.HeaderString $extraSpacing = $config.ExtraSpacing $headerTable.Indentations[$headerString] = $headerTable.HeaderLine.Length $headerTable.HeaderLine += "$headerString$regularSpacing$extraSpacing" $headerTable.UnderscoreLine += "$($LineStyle.SingleLine * ($headerString.Length + $extraSpacing.Length))$regularSpacing" $headerTable.HeaderColumns += $headerString } } $hierarchyHeader = "Hierarchy" $headerTable.Indentations[$hierarchyHeader] = $headerTable.HeaderLine.Length $headerTable.HeaderLine += $hierarchyHeader $headerTable.UnderscoreLine += $LineStyle.SingleLine * $hierarchyHeader.Length $headerTable.HeaderColumns += $hierarchyHeader return $headerTable } |