mirror of
https://github.com/Alishahryar1/free-claude-code.git
synced 2026-05-20 09:02:38 +00:00
55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
"""Platform rendering profiles for messaging transcripts and status text."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from collections.abc import Callable
|
|
from dataclasses import dataclass
|
|
|
|
from messaging.rendering.discord_markdown import (
|
|
discord_bold,
|
|
discord_code_inline,
|
|
escape_discord,
|
|
escape_discord_code,
|
|
render_markdown_to_discord,
|
|
)
|
|
from messaging.rendering.discord_markdown import (
|
|
format_status as format_status_discord,
|
|
)
|
|
from messaging.rendering.telegram_markdown import (
|
|
escape_md_v2,
|
|
escape_md_v2_code,
|
|
mdv2_bold,
|
|
mdv2_code_inline,
|
|
render_markdown_to_mdv2,
|
|
)
|
|
from messaging.rendering.telegram_markdown import (
|
|
format_status as format_status_telegram,
|
|
)
|
|
from messaging.transcript import RenderCtx
|
|
|
|
|
|
@dataclass(frozen=True, slots=True)
|
|
class RenderingProfile:
|
|
format_status: Callable[[str, str, str | None], str]
|
|
parse_mode: str | None
|
|
render_ctx: RenderCtx
|
|
limit_chars: int
|
|
|
|
|
|
def build_rendering_profile(platform_name: str) -> RenderingProfile:
|
|
"""Return rendering rules for a messaging platform."""
|
|
is_discord = platform_name == "discord"
|
|
return RenderingProfile(
|
|
format_status=format_status_discord if is_discord else format_status_telegram,
|
|
parse_mode=None if is_discord else "MarkdownV2",
|
|
render_ctx=RenderCtx(
|
|
bold=discord_bold if is_discord else mdv2_bold,
|
|
code_inline=discord_code_inline if is_discord else mdv2_code_inline,
|
|
escape_code=escape_discord_code if is_discord else escape_md_v2_code,
|
|
escape_text=escape_discord if is_discord else escape_md_v2,
|
|
render_markdown=render_markdown_to_discord
|
|
if is_discord
|
|
else render_markdown_to_mdv2,
|
|
),
|
|
limit_chars=1900 if is_discord else 3900,
|
|
)
|