feat: added a twist

This commit is contained in:
2026-04-01 00:53:55 +02:00
parent 0b7deee59e
commit b40c6436cd
76 changed files with 15121 additions and 64 deletions

View File

@@ -1,28 +1,34 @@
"""µFrame compile endpoint — POST /api/compile."""
from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
import uframe
from uframe.errors import UFrameError
router = APIRouter()
class ConvertRequest(BaseModel):
markdown: str
width: int = 80
class CompileRequest(BaseModel):
source: str
width: int = 64
class ConvertResponse(BaseModel):
class CompileResponse(BaseModel):
ascii: str
micron: str
warnings: list[str]
@router.post("/convert", response_model=ConvertResponse)
async def convert(req: ConvertRequest):
@router.post("/compile", response_model=CompileResponse)
async def compile_source(req: CompileRequest):
"""Compile µFrame .uf source into ASCII and Micron output."""
try:
from md2txt import convert_markdown
result = convert_markdown(
req.markdown,
width=req.width,
renderer_name="micron",
result = uframe.compile(req.source, width=req.width)
return CompileResponse(
ascii=result.ascii,
micron=result.micron,
warnings=[w.message for w in result.warnings],
)
return ConvertResponse(micron=result)
except Exception as e:
raise HTTPException(status_code=500, detail=f"Conversion failed: {e}")
except UFrameError as e:
raise HTTPException(status_code=422, detail=str(e))