| File: Language\FileKinds.cs | Web Access |
| Project: src\roslyn\src\Razor\src\Compiler\Microsoft.CodeAnalysis.Razor.Compiler\src\Microsoft.CodeAnalysis.Razor.Compiler.csproj (Microsoft.CodeAnalysis.Razor.Compiler) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.IO; using Microsoft.AspNetCore.Razor.Language.Components; namespace Microsoft.AspNetCore.Razor.Language; public static class FileKinds { public const string ComponentFileExtension = ".razor"; public const string LegacyFileExtension = ".cshtml"; /// <summary> /// Returns <see langword="true"/> if the specified value represents a component or component import. /// </summary> public static bool IsComponent(this RazorFileKind fileKind) => fileKind is RazorFileKind.Component or RazorFileKind.ComponentImport; /// <summary> /// Returns <see langword="true"/> if the specified value represents a component import. /// </summary> public static bool IsComponentImport(this RazorFileKind fileKind) => fileKind is RazorFileKind.ComponentImport; /// <summary> /// Returns <see langword="true"/> if the specified value represents a legacy file kind. /// </summary> public static bool IsLegacy(this RazorFileKind fileKind) => fileKind is RazorFileKind.Legacy; /// <summary> /// Compares the given file path to known Razor file extensions and names to determine the <see cref="RazorFileKind"/>. /// Returns <see langword="true"/> if a file kind can be determined; otherwise, <see langword="false"/>. /// </summary> public static bool TryGetFileKindFromPath(string filePath, out RazorFileKind fileKind) { ArgHelper.ThrowIfNull(filePath); var fileName = Path.GetFileName(filePath); if (string.Equals(ComponentHelpers.ImportsFileName, fileName, StringComparison.Ordinal)) { fileKind = RazorFileKind.ComponentImport; return true; } var extension = Path.GetExtension(filePath); if (string.Equals(ComponentFileExtension, extension, StringComparison.OrdinalIgnoreCase)) { fileKind = RazorFileKind.Component; return true; } if (string.Equals(LegacyFileExtension, extension, StringComparison.OrdinalIgnoreCase)) { fileKind = RazorFileKind.Legacy; return true; } fileKind = default; return false; } /// <summary> /// Compares the given file path to known Razor file extensions and names to determine the <see cref="RazorFileKind"/>. /// If a file kind can't be determined, the result is <see cref="RazorFileKind.Legacy"/>. /// </summary> public static RazorFileKind GetFileKindFromPath(string filePath) => TryGetFileKindFromPath(filePath, out var fileKind) ? fileKind : RazorFileKind.Legacy; }