62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
"""
|
|
Compiler Factory for managing different language compilers
|
|
"""
|
|
|
|
import os
|
|
from .c_compiler import CCompiler
|
|
from .python_compiler import PythonCompiler
|
|
|
|
|
|
class CompilerFactory:
|
|
"""
|
|
Factory class to create and manage different language compilers
|
|
"""
|
|
|
|
def __init__(self):
|
|
self.compilers = {
|
|
'c': CCompiler(),
|
|
'python': PythonCompiler()
|
|
}
|
|
|
|
# Get default language from environment variable
|
|
default_language = os.environ.get('DEFAULT_PROGRAMMING_LANGUAGE', 'c').lower()
|
|
self.default_compiler = self.compilers.get(default_language, self.compilers['c'])
|
|
|
|
def get_compiler(self, language=None):
|
|
"""
|
|
Get a compiler instance for the specified language
|
|
:param language: Language identifier ('c', 'python', etc.)
|
|
:return: Compiler instance
|
|
"""
|
|
if language is None:
|
|
return self.default_compiler
|
|
|
|
language = language.lower()
|
|
if language in self.compilers:
|
|
return self.compilers[language]
|
|
else:
|
|
# Return default compiler if requested language is not available
|
|
return self.default_compiler
|
|
|
|
def get_available_languages(self):
|
|
"""
|
|
Get list of available programming languages
|
|
:return: List of available language identifiers
|
|
"""
|
|
return list(self.compilers.keys())
|
|
|
|
def get_language_display_name(self, language):
|
|
"""
|
|
Get display name for a language
|
|
:param language: Language identifier
|
|
:return: Display name for the language
|
|
"""
|
|
display_names = {
|
|
'c': 'C',
|
|
'python': 'Python'
|
|
}
|
|
return display_names.get(language, language.capitalize())
|
|
|
|
|
|
# Global compiler factory instance
|
|
compiler_factory = CompilerFactory() |