From 80b74f79dfbfa9afb845172a5ea84110d75f1bc8 Mon Sep 17 00:00:00 2001 From: HsiangNianian Date: Thu, 13 Mar 2025 01:01:20 +0800 Subject: refactor(project)!: first implementation of the Conventional Role Play SDK with core components, renderers, extractors, and example usage. --- src/conventionalrp/renderers/__init__.py | 4 ++++ src/conventionalrp/renderers/base.py | 6 ++++++ src/conventionalrp/renderers/html_renderer.py | 21 ++++++++++++++++++ src/conventionalrp/renderers/json_renderer.py | 9 ++++++++ src/conventionalrp/renderers/markdown_renderer.py | 26 +++++++++++++++++++++++ 5 files changed, 66 insertions(+) create mode 100644 src/conventionalrp/renderers/__init__.py create mode 100644 src/conventionalrp/renderers/base.py create mode 100644 src/conventionalrp/renderers/html_renderer.py create mode 100644 src/conventionalrp/renderers/json_renderer.py create mode 100644 src/conventionalrp/renderers/markdown_renderer.py (limited to 'src/conventionalrp/renderers') diff --git a/src/conventionalrp/renderers/__init__.py b/src/conventionalrp/renderers/__init__.py new file mode 100644 index 0000000..ce04364 --- /dev/null +++ b/src/conventionalrp/renderers/__init__.py @@ -0,0 +1,4 @@ +# FILE: /trpg-log-processor/trpg-log-processor/src/trpg_log_processor/renderers/__init__.py +""" +This file initializes the renderers module. +""" \ No newline at end of file diff --git a/src/conventionalrp/renderers/base.py b/src/conventionalrp/renderers/base.py new file mode 100644 index 0000000..498adec --- /dev/null +++ b/src/conventionalrp/renderers/base.py @@ -0,0 +1,6 @@ +class BaseRenderer: + def render(self, data): + raise NotImplementedError("Render method must be implemented by subclasses.") + + def set_style(self, style): + self.style = style \ No newline at end of file diff --git a/src/conventionalrp/renderers/html_renderer.py b/src/conventionalrp/renderers/html_renderer.py new file mode 100644 index 0000000..3c30549 --- /dev/null +++ b/src/conventionalrp/renderers/html_renderer.py @@ -0,0 +1,21 @@ +from .base import BaseRenderer + +class HTMLRenderer(BaseRenderer): + def __init__(self): + super().__init__() + self.title = "TRPG Log Output" + + def render(self, data): + html_content = f"{self.title}" + html_content += "

TRPG Log Output

" + html_content += "" + return html_content + + def set_style(self, style): + # Implement style setting if needed + pass \ No newline at end of file diff --git a/src/conventionalrp/renderers/json_renderer.py b/src/conventionalrp/renderers/json_renderer.py new file mode 100644 index 0000000..4313001 --- /dev/null +++ b/src/conventionalrp/renderers/json_renderer.py @@ -0,0 +1,9 @@ +from .base import BaseRenderer + +class JSONRenderer(BaseRenderer): + def render(self, data): + import json + return json.dumps(data, ensure_ascii=False, indent=4) + + def set_style(self, style): + self.style = style # Placeholder for potential styling options in the future \ No newline at end of file diff --git a/src/conventionalrp/renderers/markdown_renderer.py b/src/conventionalrp/renderers/markdown_renderer.py new file mode 100644 index 0000000..396d6a4 --- /dev/null +++ b/src/conventionalrp/renderers/markdown_renderer.py @@ -0,0 +1,26 @@ +from .base import BaseRenderer + +class MarkdownRenderer(BaseRenderer): + def render(self, data): + """ + Renders the given data in Markdown format. + + Args: + data (dict): The data to render. + + Returns: + str: The rendered Markdown string. + """ + markdown_output = "" + for key, value in data.items(): + markdown_output += f"## {key}\n\n{value}\n\n" + return markdown_output + + def set_style(self, style): + """ + Sets the style for the Markdown renderer. + + Args: + style (dict): A dictionary of style options. + """ + self.style = style # Currently, Markdown does not support styling, but this can be extended. \ No newline at end of file -- cgit v1.2.3-70-g09d2