formats/Matrix.Format.ps1xml

<?xml version="1.0" encoding="utf-8" ?>
<Configuration>
    <Controls>
        <Control>
            <Name>Matrix-Header</Name>
            <CustomControl>
                <CustomEntries>
                    <CustomEntry>
                        <CustomItem>
                            <ExpressionBinding>
                                <ScriptBlock>
                                    '' | Write-Color
                                    "{{#cyan $($_.Size[0])}} x {{#cyan $($_.Size[1])}} Matrix" | Write-Title -Template -DarkGray -Indent 2
                                </ScriptBlock>
                            </ExpressionBinding>
                        </CustomItem>
                    </CustomEntry>
                </CustomEntries>
            </CustomControl>
        </Control>
        <Control>
            <Name>Matrix-Elements</Name>
            <CustomControl>
                <CustomEntries>
                    <CustomEntry>
                        <CustomItem>
                            <ExpressionBinding>
                                <ScriptBlock>
                                    $Values = $_.Rows
                                    $MaximumLength = $_.Indexes() | ForEach-Object {
                                        $Row, $Col = $_
                                        ($Values[$Row][$Col] | Format-ComplexValue).Length
                                    } | Get-Maximum
                                    $Padding = [Math]::Max(3, $MaximumLength)
                                    $Values | ForEach-Object {
                                        $_ | ForEach-Object {
                                            $Color = if ($_ -eq 0) { 'DarkGray' } else { 'White' }
                                            "$(($_ | Format-ComplexValue).PadLeft($Padding + 1, ' '))" | Write-Color -Color $Color -NoNewLine
                                        }
                                        '' | Write-Color
                                    }
                                </ScriptBlock>
                            </ExpressionBinding>
                        </CustomItem>
                    </CustomEntry>
                </CustomEntries>
            </CustomControl>
        </Control>
    </Controls>
    <ViewDefinitions>
        <View>
            <Name>Matrix</Name>
            <ViewSelectedBy>
                <TypeName>Prelude.Matrix</TypeName>
            </ViewSelectedBy>
            <CustomControl>
                <CustomEntries>
                    <CustomEntry>
                        <CustomItem>
                            <Frame>
                                <CustomItem>
                                    <ExpressionBinding>
                                        <CustomControlName>Matrix-Header</CustomControlName>
                                    </ExpressionBinding>
                                </CustomItem>
                            </Frame>
                            <Frame>
                                <CustomItem>
                                    <ExpressionBinding>
                                        <CustomControlName>Matrix-Elements</CustomControlName>
                                    </ExpressionBinding>
                                </CustomItem>
                            </Frame>
                        </CustomItem>
                    </CustomEntry>
                </CustomEntries>
            </CustomControl>
        </View>
    </ViewDefinitions>
</Configuration>