Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,20 @@
{
"[powershell][markdown]": {
"editor.colorDecorators": false,
},
"cSpell.words": [
"Browsable",
"clike",
"Cloneable",
"cmatch",
"ilike",
"imatch",
"Linq",
"Memberise",
"Memberwise"
"Memberwise",
"notin",
"psobject",
"Soesterberg",
"Steppable"
]
}
5 changes: 2 additions & 3 deletions Build/Build-Docs.ps1
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using module ..\..\ObjectGraphTools
Get-ChildItem $PSScriptRoot\..\Source\Public\*.ps1 | ForEach-Object {
Get-ChildItem $PSScriptRoot\..\Source\Cmdlets\*.ps1 | ForEach-Object {
Write-Host $_
Get-MarkdownHelp $_ | Out-File -Encoding ASCII $PSScriptRoot\..\Docs\$($_.BaseName).md
Get-MarkdownHelp $_ | Out-File $PSScriptRoot\..\Docs\$($_.BaseName).md
}
246 changes: 211 additions & 35 deletions Build/Build-Module.ps1

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions Build/Build-ObjectGraphTools.ps1
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# . .\Build\Build-Module.ps1 -ModulePath .\ObjectGraphTools.psm1 -SourceFolder .\Source

$Params = @{
ModulePath = "$PSScriptRoot\..\ObjectGraphTools.psm1"
SourceFolder = "$PSScriptRoot\..\Source"
Expand Down
195 changes: 111 additions & 84 deletions Docs/Compare-ObjectGraph.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ Deep compares two Object Graph and lists the differences between them.

## Parameters

### <a id="-inputobject">**`-InputObject <Object>`**</a>
### <a id="-inputobject">`-InputObject` <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Object">&lt;Object&gt;</a></a>

The input object that will be compared with the reference object (see: [-Reference](#-reference) parameter).
The input object that will be compared with the reference object (see: [`-Reference`](#-reference) parameter).

> [!NOTE]
> Multiple input object might be provided via the pipeline.
Expand All @@ -38,57 +38,69 @@ The input object that will be compared with the reference object (see: [-Referen
,$InputObject | Compare-ObjectGraph $Reference.
```

<table>
<tr><td>Type:</td><td><a href="https://docs.microsoft.com/en-us/dotnet/api/System.Object">Object</a></td></tr>
<tr><td>Mandatory:</td><td>True</td></tr>
<tr><td>Position:</td><td>Named</td></tr>
<tr><td>Default value:</td><td></td></tr>
<tr><td>Accept pipeline input:</td><td>False</td></tr>
<tr><td>Accept wildcard characters:</td><td>False</td></tr>
</table>
```powershell
Name: -InputObject
Aliases: # None
Type: [Object]
Value (default): # Undefined
Parameter sets: # All
Mandatory: True
Position: # Named
Accept pipeline input: False
Accept wildcard characters: False
```

### <a id="-reference">**`-Reference <Object>`**</a>
### <a id="-reference">`-Reference` <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Object">&lt;Object&gt;</a></a>

The reference that is used to compared with the input object (see: [-InputObject](#-inputobject) parameter).
The reference that is used to compared with the input object (see: [`-InputObject`](#-inputobject) parameter).

<table>
<tr><td>Type:</td><td><a href="https://docs.microsoft.com/en-us/dotnet/api/System.Object">Object</a></td></tr>
<tr><td>Mandatory:</td><td>True</td></tr>
<tr><td>Position:</td><td>Named</td></tr>
<tr><td>Default value:</td><td></td></tr>
<tr><td>Accept pipeline input:</td><td>False</td></tr>
<tr><td>Accept wildcard characters:</td><td>False</td></tr>
</table>
```powershell
Name: -Reference
Aliases: # None
Type: [Object]
Value (default): # Undefined
Parameter sets: # All
Mandatory: True
Position: # Named
Accept pipeline input: False
Accept wildcard characters: False
```

### <a id="-primarykey">**`-PrimaryKey <String[]>`**</a>
### <a id="-primarykey">`-PrimaryKey` <a href="https://docs.microsoft.com/en-us/dotnet/api/System.String[]">&lt;String[]&gt;</a></a>

If supplied, dictionaries (including PSCustomObject or Component Objects) in a list are matched
based on the values of the `-PrimaryKey` supplied.

<table>
<tr><td>Type:</td><td><a href="https://docs.microsoft.com/en-us/dotnet/api/System.String[]">String[]</a></td></tr>
<tr><td>Mandatory:</td><td>False</td></tr>
<tr><td>Position:</td><td>Named</td></tr>
<tr><td>Default value:</td><td></td></tr>
<tr><td>Accept pipeline input:</td><td>False</td></tr>
<tr><td>Accept wildcard characters:</td><td>False</td></tr>
</table>
```powershell
Name: -PrimaryKey
Aliases: # None
Type: [String[]]
Value (default): # Undefined
Parameter sets: # All
Mandatory: False
Position: # Named
Accept pipeline input: False
Accept wildcard characters: False
```

### <a id="-isequal">**`-IsEqual`**</a>
### <a id="-isequal">`-IsEqual`</a>

If set, the cmdlet will return a boolean (`$true` or `$false`).
As soon a Discrepancy is found, the cmdlet will immediately stop comparing further properties.

<table>
<tr><td>Type:</td><td><a href="https://docs.microsoft.com/en-us/dotnet/api/System.Management.Automation.SwitchParameter">SwitchParameter</a></td></tr>
<tr><td>Mandatory:</td><td>False</td></tr>
<tr><td>Position:</td><td>Named</td></tr>
<tr><td>Default value:</td><td></td></tr>
<tr><td>Accept pipeline input:</td><td>False</td></tr>
<tr><td>Accept wildcard characters:</td><td>False</td></tr>
</table>
```powershell
Name: -IsEqual
Aliases: # None
Type: [SwitchParameter]
Value (default): # Undefined
Parameter sets: # All
Mandatory: False
Position: # Named
Accept pipeline input: False
Accept wildcard characters: False
```

### <a id="-matchcase">**`-MatchCase`**</a>
### <a id="-matchcase">`-MatchCase`</a>

Unless the `-MatchCase` switch is provided, string values are considered case insensitive.

Expand All @@ -97,16 +109,19 @@ Unless the `-MatchCase` switch is provided, string values are considered case in
> if the `$Reference` is an object (PSCustomObject or component object), the key or name comparison
> is case insensitive otherwise the comparer supplied with the dictionary is used.

<table>
<tr><td>Type:</td><td><a href="https://docs.microsoft.com/en-us/dotnet/api/System.Management.Automation.SwitchParameter">SwitchParameter</a></td></tr>
<tr><td>Mandatory:</td><td>False</td></tr>
<tr><td>Position:</td><td>Named</td></tr>
<tr><td>Default value:</td><td></td></tr>
<tr><td>Accept pipeline input:</td><td>False</td></tr>
<tr><td>Accept wildcard characters:</td><td>False</td></tr>
</table>
```powershell
Name: -MatchCase
Aliases: # None
Type: [SwitchParameter]
Value (default): # Undefined
Parameter sets: # All
Mandatory: False
Position: # Named
Accept pipeline input: False
Accept wildcard characters: False
```

### <a id="-matchtype">**`-MatchType`**</a>
### <a id="-matchtype">`-MatchType`</a>

Unless the `-MatchType` switch is provided, a loosely (inclusive) comparison is done where the
`$Reference` object is leading. Meaning `$Reference -eq $InputObject`:
Expand All @@ -116,27 +131,33 @@ Unless the `-MatchType` switch is provided, a loosely (inclusive) comparison is
1.0 -eq '1.0' # $true (also $false if the `-MatchType` is provided)
```

<table>
<tr><td>Type:</td><td><a href="https://docs.microsoft.com/en-us/dotnet/api/System.Management.Automation.SwitchParameter">SwitchParameter</a></td></tr>
<tr><td>Mandatory:</td><td>False</td></tr>
<tr><td>Position:</td><td>Named</td></tr>
<tr><td>Default value:</td><td></td></tr>
<tr><td>Accept pipeline input:</td><td>False</td></tr>
<tr><td>Accept wildcard characters:</td><td>False</td></tr>
</table>

### <a id="-ignorelistorder">**`-IgnoreListOrder`**</a>
```powershell
Name: -MatchType
Aliases: # None
Type: [SwitchParameter]
Value (default): # Undefined
Parameter sets: # All
Mandatory: False
Position: # Named
Accept pipeline input: False
Accept wildcard characters: False
```

<table>
<tr><td>Type:</td><td><a href="https://docs.microsoft.com/en-us/dotnet/api/System.Management.Automation.SwitchParameter">SwitchParameter</a></td></tr>
<tr><td>Mandatory:</td><td>False</td></tr>
<tr><td>Position:</td><td>Named</td></tr>
<tr><td>Default value:</td><td></td></tr>
<tr><td>Accept pipeline input:</td><td>False</td></tr>
<tr><td>Accept wildcard characters:</td><td>False</td></tr>
</table>
### <a id="-ignorelistorder">`-IgnoreListOrder`</a>

```powershell
Name: -IgnoreListOrder
Aliases: # None
Type: [SwitchParameter]
Value (default): # Undefined
Parameter sets: # All
Mandatory: False
Position: # Named
Accept pipeline input: False
Accept wildcard characters: False
```

### <a id="-matchmaporder">**`-MatchMapOrder`**</a>
### <a id="-matchmaporder">`-MatchMapOrder`</a>

By default, items in dictionary (including properties of an PSCustomObject or Component Object) are
matched by their key name (independent of the order).
Expand All @@ -146,26 +167,32 @@ If the `-MatchMapOrder` switch is supplied, each entry is also validated by the
> A `[HashTable]` type is unordered by design and therefore, regardless the `-MatchMapOrder` switch,
the order of the `[HashTable]` (defined by the `$Reference`) are always ignored.

<table>
<tr><td>Type:</td><td><a href="https://docs.microsoft.com/en-us/dotnet/api/System.Management.Automation.SwitchParameter">SwitchParameter</a></td></tr>
<tr><td>Mandatory:</td><td>False</td></tr>
<tr><td>Position:</td><td>Named</td></tr>
<tr><td>Default value:</td><td></td></tr>
<tr><td>Accept pipeline input:</td><td>False</td></tr>
<tr><td>Accept wildcard characters:</td><td>False</td></tr>
</table>
```powershell
Name: -MatchMapOrder
Aliases: # None
Type: [SwitchParameter]
Value (default): # Undefined
Parameter sets: # All
Mandatory: False
Position: # Named
Accept pipeline input: False
Accept wildcard characters: False
```

### <a id="-maxdepth">**`-MaxDepth <Int32>`**</a>
### <a id="-maxdepth">`-MaxDepth` <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Int32">&lt;Int32&gt;</a></a>

The maximal depth to recursively compare each embedded property (default: 10).

<table>
<tr><td>Type:</td><td><a href="https://docs.microsoft.com/en-us/dotnet/api/System.Int32">Int32</a></td></tr>
<tr><td>Mandatory:</td><td>False</td></tr>
<tr><td>Position:</td><td>Named</td></tr>
<tr><td>Default value:</td><td><code>[PSNode]::DefaultMaxDepth</code></td></tr>
<tr><td>Accept pipeline input:</td><td>False</td></tr>
<tr><td>Accept wildcard characters:</td><td>False</td></tr>
</table>
```powershell
Name: -MaxDepth
Aliases: -Depth
Type: [Int32]
Value (default): [PSNode]::DefaultMaxDepth
Parameter sets: # All
Mandatory: False
Position: # Named
Accept pipeline input: False
Accept wildcard characters: False
```

[comment]: <> (Created with Get-MarkdownHelp: Install-Script -Name Get-MarkdownHelp)
Loading