src/formatFuncs.ps1
function formatOutPut($Property, $result) { if (!$Property) { return $result } $showType = ($Property -join '') $showProps = $Property if (!$result) { return } if ($result.getType().name -eq 'Object[]') { $showType += 'arrayType' $result | ForEach-Object { foreach ($p in $_.PSObject.Properties) { if ($p.Value -and $p.Value.getType().name -eq 'Object[]' -and $p.Value.length -eq 3) { $p.Value = $p.Value[1] } } $_.PSObject.TypeNames.Insert(0, $showType) } } else { $result.PSObject.TypeNames.Insert(0, $showType) } if (!(Get-TypeData $showType)) { if ($result.getType().name -eq 'Object[]') { # XML formating for arrays (table view with fixed column width) $XML_Path = "$([System.IO.Path]::GetTempPath())XmsOut.format.ps1xml" createNewFormatXML Update-FormatData -PrependPath $XML_Path } else { # Adapting formating for objects (table view selecting automatically for low number or props) $TypeData = @{ TypeName = $showType DefaultDisplayPropertySet = $showProps } Update-TypeData @TypeData } } return $result } function createNewFormatXML() { $typeName = $showType $xDoc = [xml]'<?xml version="1.0" encoding="utf-8" ?><Configuration><ViewDefinitions><View></View></ViewDefinitions></Configuration>'; $viewNode = $xDoc.SelectSingleNode("//Configuration//ViewDefinitions//View") $nameNode = $viewNode.AppendChild($xDoc.CreateElement("Name")) [void]$nameNode.AppendChild($xDoc.CreateTextNode($typeName)) $ViewSelectedByNode = $viewNode.AppendChild($xDoc.CreateElement("ViewSelectedBy")) $TypeNameNode = $ViewSelectedByNode.AppendChild($xDoc.CreateElement("TypeName")) [void]$TypeNameNode.AppendChild($xDoc.CreateTextNode($typeName)) $TableControlNode = $viewNode.AppendChild($xDoc.CreateElement("TableControl")) $TableHeadersNode = $TableControlNode.AppendChild($xDoc.CreateElement("TableHeaders")) $TableRowEntriesNode = $TableControlNode.AppendChild($xDoc.CreateElement("TableRowEntries")) $TableRowEntryNode = $TableRowEntriesNode.AppendChild($xDoc.CreateElement("TableRowEntry")) $TableColumnItemsNode = $TableRowEntryNode.AppendChild($xDoc.CreateElement("TableColumnItems")) addPropsInFormatXML $xDoc.Save($XML_Path) } function addPropsInFormatXML () { $len = $showProps.length foreach ($prop in $showProps) { $TableColumnHeaderNode = $TableHeadersNode.AppendChild($xDoc.CreateElement("TableColumnHeader")) if ($len -gt 4) { $WidthNode = $TableColumnHeaderNode.AppendChild($xDoc.CreateElement("Width")) if ($prop -eq 'index') { $w = 7 } else { $w = 20 } [void]($WidthNode.AppendChild($xDoc.CreateTextNode($w))) } $TableColumnItemsNode = $TableRowEntryNode.AppendChild($xDoc.CreateElement("TableColumnItems")) $TableColumnItemNode = $TableColumnItemsNode.AppendChild($xDoc.CreateElement("TableColumnItem")) $PropertyNameNode = $TableColumnItemNode.AppendChild($xDoc.CreateElement("PropertyName")) [void]($PropertyNameNode.AppendChild($xDoc.CreateTextNode($prop))) } } |