GetNamingConventions.ps1

<#
 
.SYNOPSIS
    Converts an upper camel case name (Pascal case) into a hash table of other naming conventions.
 
.PARAMETER Name
    The name of convert to other naming conventions. This should be specified as upper camel case (Pascal case).
 
.PARAMETER PluralName
    This is an optional parameter that can be specified when pluralization of a name is something other than appending an 's'.
 
.EXAMPLE
    PS C:\> Get-NamingConventions -Name ItemList
 
    Name : ItemList
    Lowercase : itemlist
    Uppercase : ITEMLIST
    UpperCamelCase : ItemList
    LowerCamelCase : itemList
    KebabCase : item-list
    Plural : @{Name=ItemLists; Lowercase=itemlists; Uppercase=ITEMLISTS; UpperCamelCase=ItemLists;
                    LowerCamelCase=itemLists; KebabCase=item-lists}
 
#>


function Get-NamingConventions 
{
    param (
        [Parameter(Mandatory = $true)]
        [string] $Name,

        [string] $PluralName = "$($Name)s"
    )

    $Obj = New-Object PSObject
    $Obj | Add-Member -MemberType NoteProperty -Name "Name" -Value $Name
    $Obj | Add-Member -MemberType NoteProperty -Name "Lowercase" -Value $Name.ToLower()
    $Obj | Add-Member -MemberType NoteProperty -Name "Uppercase" -Value $Name.ToUpper()
    $Obj | Add-Member -MemberType NoteProperty -Name "UpperCamelCase" -Value $Name
    $Obj | Add-Member -MemberType NoteProperty -Name "LowerCamelCase" -Value ([Char]::ToLower($Name[0]) + $Name.Substring(1))
    $Obj | Add-Member -MemberType NoteProperty -Name "KebabCase" -Value (ConvertTo-KebabCase -Name $Name)
    $Obj | Add-Member -MemberType NoteProperty -Name "Plural" -Value (New-Object PSObject)
    $Obj.Plural | Add-Member -MemberType NoteProperty -Name "Name" -Value $PluralName
    $Obj.Plural | Add-Member -MemberType NoteProperty -Name "Lowercase" -Value $PluralName.ToLower()
    $Obj.Plural | Add-Member -MemberType NoteProperty -Name "Uppercase" -Value $PluralName.ToUpper()
    $Obj.Plural | Add-Member -MemberType NoteProperty -Name "UpperCamelCase" -Value $PluralName
    $Obj.Plural | Add-Member -MemberType NoteProperty -Name "LowerCamelCase" -Value ([Char]::ToLower($PluralName[0]) + $PluralName.Substring(1))
    $Obj.Plural | Add-Member -MemberType NoteProperty -Name "KebabCase" -Value (ConvertTo-KebabCase -Name $PluralName)

    $Obj | Add-Member -MemberType ScriptMethod -Name "ToString" { $this.Name } -Force
    $Obj.Plural | Add-Member -MemberType ScriptMethod -Name "ToString" { $this.Name } -Force

    $Obj
}