Initial upload: curl-converter-cli with CI/CD workflow
This commit is contained in:
64
curlconverter/generators/__init__.py
Normal file
64
curlconverter/generators/__init__.py
Normal file
@@ -0,0 +1,64 @@
|
||||
"""Code generators for different programming languages."""
|
||||
|
||||
from abc import ABC, abstractmethod
|
||||
from typing import Dict, Callable
|
||||
from curlconverter.parser import ParsedCurl
|
||||
|
||||
|
||||
class Generator(ABC):
|
||||
"""Base class for code generators."""
|
||||
|
||||
@property
|
||||
@abstractmethod
|
||||
def language(self) -> str:
|
||||
"""Return the language name."""
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def generate(self, parsed: ParsedCurl) -> str:
|
||||
"""Generate code from parsed curl data."""
|
||||
pass
|
||||
|
||||
|
||||
_generators: Dict[str, Callable[[ParsedCurl], str]] = {}
|
||||
|
||||
|
||||
def register_generator(name: str):
|
||||
"""Decorator to register a generator function."""
|
||||
def decorator(func: Callable[[ParsedCurl], str]):
|
||||
_generators[name.lower()] = func
|
||||
return func
|
||||
return decorator
|
||||
|
||||
|
||||
def generate_code(parsed: ParsedCurl, language: str) -> str:
|
||||
"""Generate code for the given language."""
|
||||
lang = language.lower()
|
||||
if lang not in _generators:
|
||||
supported = ", ".join(sorted(_generators.keys()))
|
||||
raise ValueError(f"Unsupported language: {language}. Supported: {supported}")
|
||||
return _generators[lang](parsed)
|
||||
|
||||
|
||||
def get_supported_languages() -> list:
|
||||
"""Return list of supported language names."""
|
||||
return sorted(_generators.keys())
|
||||
|
||||
|
||||
def get_language_display_name(lang: str) -> str:
|
||||
"""Return display name for a language."""
|
||||
names = {
|
||||
"python": "Python (requests)",
|
||||
"javascript": "JavaScript (fetch)",
|
||||
"go": "Go (net/http)",
|
||||
"ruby": "Ruby (Net::HTTP)",
|
||||
"php": "PHP (cURL)"
|
||||
}
|
||||
return names.get(lang.lower(), lang.capitalize())
|
||||
|
||||
|
||||
from curlconverter.generators import python
|
||||
from curlconverter.generators import javascript
|
||||
from curlconverter.generators import go
|
||||
from curlconverter.generators import ruby
|
||||
from curlconverter.generators import php
|
||||
Reference in New Issue
Block a user