private/ConvertTo-GlyPreviewName.ps1
|
function ConvertTo-GlyPreviewName { param( [GlySelector] $Selector ) if ($null -eq $Selector) { return 'file.txt' } $name = if (-not [string]::IsNullOrWhiteSpace($Selector.Name)) { $Selector.Name } elseif ($Selector.Glob.Count -gt 0) { $Selector.Glob[0] -replace '\*', 'sample' -replace '\?', 'x' } elseif ($Selector.Extension.Count -gt 0) { $extension = $Selector.Extension[0] if ($extension.StartsWith('.')) { "file$extension" } else { "file.$extension" } } elseif ($Selector.Attributes -contains [System.IO.FileAttributes]::Hidden) { '.hidden' } elseif ($Selector.Attributes -contains [System.IO.FileAttributes]::ReadOnly) { 'readonly.txt' } else { switch ($Selector.Kind) { ([GlyFileSystemKind]::Directory) { 'directory' } ([GlyFileSystemKind]::Junction) { 'junction' } ([GlyFileSystemKind]::Symlink) { 'link' } ([GlyFileSystemKind]::Other) { 'item' } default { 'file.txt' } } } switch ($Selector.Kind) { ([GlyFileSystemKind]::Directory) { return "$name/" } ([GlyFileSystemKind]::Junction) { return "$name -> target/" } ([GlyFileSystemKind]::Symlink) { return "$name -> target" } default { return $name } } } |