Functions/Private/Get-PSHTMLTemplate.ps1

Function Get-PSHTMLTemplate{
    <#
        .Example



html{
    Body{

        include -name body

    }
    Footer{
        Include -Name Footer
    }
}

#Generates the following HTML code

        <html>
            <body>

            h2 "This comes a template file"
            </body>
            <footer>
            div {
                h4 "This is the footer from a template"
                p{
                    CopyRight from template
                }
            }
            </footer>
        </html>
    #>

    [CmdletBinding()]
    Param(
        $Name
    )

    $callstack = Get-PSCallStack
    $ScriptCaller = $callstack[-1].ScriptName
    $ScriptPath = Split-Path $ScriptCaller -Parent
    $TemplatesFolder = join-path $ScriptPath -ChildPath "Templates"

    if(!(test-path $TemplatesFolder)){
        throw "The folder templates was not found at $($TemplatesFolder)"
    }
    if(!($Name.EndsWith(".ps1"))){
        $Name = $name + ".ps1"
    }
    $Template = get-childItem -Path $templatesFolder -filter "$($Name)"

    if ($template.count -ge 2){
        throw "One or more files with the same template name $($name) where found, please be more specefic, or rename the templates"
    }
    if(!($template)){
        throw "No template file with the name '$($Name)' could be found in the templates folder."
    }

    if($template.count -eq 1){
        write-verbose "Template file found at $($Template.FullName)"
    }

    $Rawcontent = Get-Content $Template.FullName -Raw
    $Content = [scriptBlock]::Create($Rawcontent).Invoke()
    return $content

}