From d5578af1ce7041da66734731f1a8f45bda905c6f Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Mon, 6 Jul 2026 08:27:03 +0200 Subject: [PATCH 1/5] Standardize README landing page --- README.md | 108 ++++-------------------------------------------------- 1 file changed, 8 insertions(+), 100 deletions(-) diff --git a/README.md b/README.md index ebb04ec..fe93142 100644 --- a/README.md +++ b/README.md @@ -1,119 +1,27 @@ # Hashtable -Hashtable is a comprehensive module that provides functions for working with PowerShell hashtables. -It enables you to convert hashtables to PSCustomObjects and vice versa, format hashtables into readable PowerShell -code, merge hashtables with override support, and remove entries based on specific criteria. This collection of -utilities is designed to simplify complex hashtable manipulations and help automate your PowerShell workflows. - -## Prerequisites - -This module uses the following external resources: -- The [PSModule framework](https://github.com/PSModule) for building, testing, and publishing the module. +Hashtable is a PowerShell module that simplifies common hashtable operations. ## Installation -To install the module from the PowerShell Gallery, you can use the following command: +Install the module from the PowerShell Gallery: ```powershell Install-PSResource -Name Hashtable Import-Module -Name Hashtable ``` -## Usage - -Below are some examples illustrating typical use cases for the module. - -### Example 1: Converting a Hashtable to a PSCustomObject - -This example demonstrates how to convert a nested hashtable into a PSCustomObject, making it easier to manipulate and explore your data. - -```powershell -$hashtable = @{ - Name = 'Alice' - Age = 30 - Contact = @{ - Email = 'alice@example.com' - Phone = '123-456-7890' - } -} - -$object = $hashtable | ConvertFrom-Hashtable -$object | Format-List -``` - -### Example 2: Merging Hashtables - -Merge a default settings hashtable with user-specified overrides. In this example, the values in the override hashtable -replace those in the main hashtable. - -```powershell -$defaultSettings = @{ - Theme = 'Light' - Language = 'en' - Layout = 'Standard' -} -$userSettings = @{ - Theme = 'Dark' - Layout = 'Compact' -} - -$mergedSettings = $defaultSettings | Merge-Hashtable -Overrides $userSettings -$mergedSettings -``` - -### Example 3: Formatting a Hashtable as PowerShell Code - -Convert a hashtable into a nicely formatted PowerShell code representation. This is especially useful for exporting -configurations to a `.psd1` file. - -```powershell -$configuration = @{ - Server = 'localhost' - Port = 8080 - Credentials = @{ - Username = 'admin' - Password = 'P@ssw0rd' - } - Enabled = $true -} - -$formattedConfig = $configuration | Format-Hashtable -Write-Output $formattedConfig -``` +## Documentation -### Example 4: Removing Hashtable Entries Based on Criteria +Documentation is published at [psmodule.io/Hashtable](https://psmodule.io/Hashtable/). -Remove specific entries from a hashtable, such as keys with null or empty values, or those matching a particular name. +Use PowerShell help and command discovery for module details: ```powershell -$ht = @{ - ValidKey = 'SomeValue' - EmptyKey = '' - RemoveMe = 'Unwanted' -} - -# Remove entries with null or empty values and keys named 'RemoveMe' -$ht | Remove-HashtableEntry -NullOrEmptyValues -Keys 'RemoveMe' -$ht +Get-Command -Module Hashtable +Get-Help -Examples ``` -You can use `Get-Command -Module 'Hashtable'` to list available commands, and `Get-Help -Examples ` to view command-specific examples. - -## Documentation - -Detailed documentation for each function is available via inline help. For more extensive documentation, please visit the -[Hashtable docs](https://psmodule.io/Hashtable/) or [PSModule Docs](https://psmodule.io/docs). - ## Contributing -Coder or not, you can contribute to the project! We welcome all contributions. - -### For Users - -If you don't code, your feedback is invaluable. If you encounter issues, unexpected behaviors, or missing functionality, -please submit a bug report or feature request via the project's issues page. - -### For Developers - -If you code, we'd love to see your contributions. Please review the [Contribution Guidelines](CONTRIBUTING.md) for more details. -You can start by picking up an existing issue or submitting a new one if you have an idea for a new feature or improvement. +Issues and pull requests are welcome. Please use the repository issue tracker to report bugs, request features, or discuss improvements. From 5809ebaeb0858b3dfd3d2378e02fc4e172342484 Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Mon, 6 Jul 2026 10:41:28 +0200 Subject: [PATCH 2/5] Address Copilot README review --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fe93142..cb5edcb 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,8 @@ Install-PSResource -Name Hashtable Import-Module -Name Hashtable ``` +If your environment still uses PowerShellGet, install the module with `Install-Module -Name Hashtable` instead. + ## Documentation Documentation is published at [psmodule.io/Hashtable](https://psmodule.io/Hashtable/). @@ -19,7 +21,7 @@ Use PowerShell help and command discovery for module details: ```powershell Get-Command -Module Hashtable -Get-Help -Examples +Get-Help 'CommandName' -Examples ``` ## Contributing From c28f667387d51c0663e06eea9891a63932c7e78a Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Mon, 6 Jul 2026 10:49:31 +0200 Subject: [PATCH 3/5] Address Copilot README review --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cb5edcb..f35ecdf 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Use PowerShell help and command discovery for module details: ```powershell Get-Command -Module Hashtable -Get-Help 'CommandName' -Examples +Get-Help ConvertTo-HashTable -Examples ``` ## Contributing From 0883750528e06f66d5a58e03d891141bfbfc2cab Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Mon, 6 Jul 2026 10:57:47 +0200 Subject: [PATCH 4/5] Address Copilot README review --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f35ecdf..dacb588 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Use PowerShell help and command discovery for module details: ```powershell Get-Command -Module Hashtable -Get-Help ConvertTo-HashTable -Examples +Get-Help ConvertTo-Hashtable -Examples ``` ## Contributing From a595b269d8f4709901b91a11b98e17f34486aa94 Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Sun, 12 Jul 2026 11:57:38 +0200 Subject: [PATCH 5/5] docs: restore Usage showcase and remove Contributing in README --- README.md | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 79 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index dacb588..7354e3f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # Hashtable -Hashtable is a PowerShell module that simplifies common hashtable operations. +Hashtable is a comprehensive PowerShell module for working with hashtables. It converts hashtables to and from +PSCustomObjects, formats hashtables into readable PowerShell code, merges hashtables with override support, and removes +entries based on specific criteria — simplifying complex hashtable manipulations in your automation workflows. ## Installation @@ -11,7 +13,81 @@ Install-PSResource -Name Hashtable Import-Module -Name Hashtable ``` -If your environment still uses PowerShellGet, install the module with `Install-Module -Name Hashtable` instead. +## Usage + +### Example: Convert a hashtable to a PSCustomObject + +Convert a nested hashtable into a PSCustomObject, making it easier to manipulate and explore your data. + +```powershell +$hashtable = @{ + Name = 'Alice' + Age = 30 + Contact = @{ + Email = 'alice@example.com' + Phone = '123-456-7890' + } +} + +$object = $hashtable | ConvertFrom-Hashtable +$object | Format-List +``` + +### Example: Merge hashtables with overrides + +Merge a default settings hashtable with user-specified overrides. Values in the override hashtable replace those in the +base hashtable. + +```powershell +$defaultSettings = @{ + Theme = 'Light' + Language = 'en' + Layout = 'Standard' +} +$userSettings = @{ + Theme = 'Dark' + Layout = 'Compact' +} + +$mergedSettings = $defaultSettings | Merge-Hashtable -Overrides $userSettings +$mergedSettings +``` + +### Example: Format a hashtable as PowerShell code + +Convert a hashtable into a nicely formatted PowerShell code representation — useful for exporting configuration to a +`.psd1` file. + +```powershell +$configuration = @{ + Server = 'localhost' + Port = 8080 + Credentials = @{ + Username = 'admin' + Password = 'P@ssw0rd' + } + Enabled = $true +} + +$formattedConfig = $configuration | Format-Hashtable +Write-Output $formattedConfig +``` + +### Example: Remove hashtable entries by criteria + +Remove specific entries from a hashtable, such as keys with null or empty values or a key matching a particular name. + +```powershell +$ht = @{ + ValidKey = 'SomeValue' + EmptyKey = '' + RemoveMe = 'Unwanted' +} + +# Remove entries with null or empty values and the key named 'RemoveMe' +$ht | Remove-HashtableEntry -NullOrEmptyValues -Keys 'RemoveMe' +$ht +``` ## Documentation @@ -21,9 +97,5 @@ Use PowerShell help and command discovery for module details: ```powershell Get-Command -Module Hashtable -Get-Help ConvertTo-Hashtable -Examples +Get-Help -Name ConvertTo-Hashtable -Examples ``` - -## Contributing - -Issues and pull requests are welcome. Please use the repository issue tracker to report bugs, request features, or discuss improvements.