Source code for ralph.language_detector.extensions

"""File extension to language mapping for project detection."""

from __future__ import annotations

EXTENSION_TO_LANGUAGE: dict[str, str] = {
    "rs": "Rust",
    "py": "Python",
    "pyw": "Python",
    "pyi": "Python",
    "js": "JavaScript",
    "mjs": "JavaScript",
    "cjs": "JavaScript",
    "jsx": "JavaScript",
    "ts": "TypeScript",
    "mts": "TypeScript",
    "cts": "TypeScript",
    "tsx": "TypeScript",
    "go": "Go",
    "java": "Java",
    "rb": "Ruby",
    "erb": "Ruby",
    "php": "PHP",
    "yml": "YAML",
    "yaml": "YAML",
    "json": "JSON",
    "html": "HTML",
    "htm": "HTML",
    "css": "CSS",
    "scss": "SCSS",
    "sass": "Sass",
    "less": "Less",
}

NON_PRIMARY_LANGUAGES: set[str] = {
    "YAML",
    "JSON",
    "HTML",
    "CSS",
    "SCSS",
    "Sass",
    "Less",
}


[docs] def extension_to_language(extension: str) -> str | None: """Map a file extension to a language name.""" return EXTENSION_TO_LANGUAGE.get(extension.lower())
[docs] def is_non_primary_language(language: str) -> bool: """Return whether a language should not be preferred as primary.""" return language in NON_PRIMARY_LANGUAGES