export function extractLanguageNameFromFile()

in packages/core/src/codewhispererChat/editor/context/file/languages.ts [52:114]


export function extractLanguageNameFromFile(file: TextDocument): string | undefined {
    const languageId = file.languageId

    if (languageId === undefined) {
        return undefined
    }
    if (defaultLanguages.includes(languageId)) {
        return languageId
    }
    switch (languageId) {
        case 'bat':
            return 'bat'
        case 'cpp':
            return 'c++'
        case 'csharp':
            return 'c#'
        case 'cuda-cpp':
            return 'c++'
        case 'dockerfile':
            return 'dockerfile'
        case 'fsharp':
            return 'f#'
        case 'git-commit':
            return 'git'
        case 'git-rebase':
            return 'git'
        case 'javascriptreact':
            return 'javascript'
        case 'jsonc':
            return 'json'
        case 'objective-c':
            return 'objective-c'
        case 'objective-cpp':
            return 'objective-c++'
        case 'perl6':
            return 'raku'
        case 'plaintext':
            return undefined
        case 'jade':
            return 'pug'
        case 'razor':
            return 'razor'
        case 'scss':
            return 'sass'
        case 'shellscript':
            return 'sh'
        case 'typescriptreact':
            return 'typescript'
        case 'vb':
            return 'visual-basic'
        case 'vue-html':
            return 'vue'
        default:
            if (['javascript', 'node'].some((identifier) => languageId.includes(identifier))) {
                return 'javascript'
            } else if (languageId.includes('typescript')) {
                return 'typescript'
            } else if (languageId.includes('python')) {
                return 'python'
            }
            return undefined
    }
}