ASCIIWRITE.psm1

$ModulePath = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent
$PrivatePath = '{0}\Private\*.ps1' -f $ModulePath
$PublicPath = '{0}\Public\*.ps1'-f $ModulePath
$ScriptPath = '{0}\Script\*.ps1'-f $ModulePath
$Scripts = Get-ChildItem -Path $ScriptPath,$PrivatePath, $PublicPath | Select-Object -ExpandProperty FullName

foreach($Script in $Scripts) {
        . $Script
}
$SearchRecursive = $true
$SearchRootOnly  = $false
$PublicScriptBlock = [ScriptBlock]::Create((Get-ChildItem -Path $PublicPath | Get-Content | Out-String))
$PublicFunctions = $PublicScriptBlock.Ast.FindAll({ $args[0] -is [System.Management.Automation.Language.FunctionDefinitionAst]},$SearchRootOnly).Name
$PublicAlias = $PublicScriptBlock.Ast.FindAll({ $args[0] -is [System.Management.Automation.Language.ParamBlockAst] },$SearchRecursive).Where{$_.TypeName.FullName -eq 'alias'}.PositionalArguments.Value

$ExportParam = @{}
if($PublicFunctions) {
        $ExportParam.Add('Function',$PublicFunctions)
}
if($PublicAlias) {
        $ExportParam.Add('Alias',$PublicAlias)
}
if($ExportParam.Keys.Count -gt 0) {
        Export-ModuleMember @ExportParam
}