Files
colio/common/utils/mapManager.py

69 lines
1.9 KiB
Python

import os
def guess_language_from_path(path: str) -> str:
_, ext = os.path.splitext(path or "")
ext = ext.lower()
ext_to_lang = {
# Web
".js": "javascript",
".mjs": "javascript",
".cjs": "javascript",
".ts": "typescript",
".tsx": "typescript",
".jsx": "javascript",
".html": "html",
".htm": "html",
".css": "css",
".scss": "scss",
".sass": "sass",
".less": "less",
# Backend / General
".py": "python",
".java": "java",
".kt": "kotlin",
".kts": "kotlin",
".go": "go",
".rb": "ruby",
".php": "php",
".cs": "csharp",
".rs": "rust",
".c": "c",
".h": "c", # 프로젝트에 따라 c/cpp 헤더지만 일단 c로
".cpp": "cpp",
".cc": "cpp",
".cxx": "cpp",
".hpp": "cpp",
".hh": "cpp",
".swift": "swift",
# Shell / Infra
".sh": "bash",
".bash": "bash",
".zsh": "zsh",
".ps1": "powershell",
".dockerfile": "dockerfile", # 보통 안 걸림. 아래 별도 처리도 참고.
".yml": "yaml",
".yaml": "yaml",
".json": "json",
".toml": "toml",
".ini": "ini",
# Data / Docs
".md": "markdown",
".txt": "text",
".sql": "sql",
".xml": "xml",
".csv": "csv",
}
# 확장자 없는 케이스들 (대표적으로 Dockerfile 등)
base = os.path.basename(path or "").lower()
if base == "dockerfile":
return "dockerfile"
if base in {"makefile"}:
return "makefile"
return ext_to_lang.get(ext, "text")