Codelint-MCP / src /utils /__init__.py
OsamaAliMid's picture
Add CodeLint MCP Premium Edition application
ec37394
"""Language Detection Utility"""
import re
from typing import Optional
def detect_language(code: str) -> str:
"""
Auto-detect programming language from code content.
Args:
code: Source code string
Returns:
str: Detected language (python, javascript, typescript, or unknown)
"""
# Python indicators
python_patterns = [
r'\bdef\s+\w+\s*\(',
r'\bclass\s+\w+\s*:',
r'\bimport\s+\w+',
r'\bfrom\s+\w+\s+import',
r'__init__',
r'self\.',
]
# JavaScript indicators
js_patterns = [
r'\bfunction\s+\w+\s*\(',
r'\bconst\s+\w+\s*=',
r'\blet\s+\w+\s*=',
r'\bvar\s+\w+\s*=',
r'=>',
r'console\.log',
]
# TypeScript indicators
ts_patterns = [
r':\s*(string|number|boolean|any|void)',
r'\binterface\s+\w+',
r'\btype\s+\w+\s*=',
r'<\w+>',
]
# Count matches
python_score = sum(1 for pattern in python_patterns if re.search(pattern, code))
js_score = sum(1 for pattern in js_patterns if re.search(pattern, code))
ts_score = sum(1 for pattern in ts_patterns if re.search(pattern, code))
# TypeScript is superset of JavaScript, so add JS score
if ts_score > 0:
ts_score += js_score
# Determine winner
scores = {
"python": python_score,
"javascript": js_score,
"typescript": ts_score
}
max_score = max(scores.values())
if max_score == 0:
return "unknown"
return max(scores, key=scores.get)