From d26f8d0d917c9626a43cdc6878058e7da4136d2e Mon Sep 17 00:00:00 2001 From: shenjack <3695888@qq.com> Date: Wed, 10 May 2023 00:52:56 +0800 Subject: [PATCH] update Options --- Difficult_Rocket/crash/__init__.py | 27 +++++---------------------- Difficult_Rocket/utils/options.py | 17 +++++++++++++++++ configs/main.toml | 4 ++-- docs/src/update_logs.md | 12 ++++++++++++ 4 files changed, 36 insertions(+), 24 deletions(-) diff --git a/Difficult_Rocket/crash/__init__.py b/Difficult_Rocket/crash/__init__.py index 5d6f2b8..e7a8316 100644 --- a/Difficult_Rocket/crash/__init__.py +++ b/Difficult_Rocket/crash/__init__.py @@ -19,7 +19,7 @@ import traceback import threading import multiprocessing from pathlib import Path -from typing import Optional, Union, TextIO +from typing import Optional, Union # import psutil # for more system info @@ -73,18 +73,6 @@ def to_code(string: str): return f'`{string}`' -def write_markdown_tablet(crash_file: TextIO, tablet: list) -> None: - a_len = max(tablet[1], 6) - b_len = max(tablet[2], 5) - c_len = max(tablet[3], 10) - crash_file.write(f'\n| Option{" " * (a_len - 4)} | Value{" " * (b_len - 3)} | Value Type{" " * (c_len - 8)} |\n') - crash_file.write(f'|:{"-" * (a_len + 3)}|:{"-" * (b_len + 3)}|:{"-" * (c_len + 3)}|\n') - for a, b, c in tablet[0]: - b, c = str(b), str(c) - crash_file.write( - f'| `{a}`{" " * (a_len - len(a))} | `{b}`{" " * (b_len - len(b))} | `{c}`{" " * (c_len - len(c))} |\n') - - def create_crash_report(info: Optional[str] = None) -> None: crash_info = crash_info_handler(info) if 'crash_report' not in os.listdir('./'): @@ -116,8 +104,10 @@ def write_info_to_cache(cache_stream): cache_stream.write(markdown_line_handler(f'DR Version: {Difficult_Rocket.game_version}', level=1)) cache_stream.write(markdown_line_handler(f'DR language: {DR_runtime.language}', level=1)) cache_stream.write(markdown_line_handler(f'Running Dir: {Path(os.curdir).resolve()}', level=1)) - write_options(DR_runtime, cache_stream, DR_configs) - write_options(DR_option, cache_stream, Process_message) + cache_stream.write(f"\n{DR_runtime.as_markdown()}") + cache_stream.write(DR_configs) + cache_stream.write(f"\n{DR_option.as_markdown()}") + cache_stream.write(Process_message) for process in all_process: process: multiprocessing.Process cache_stream.write(markdown_line_handler(f'{process.name}', code=True)) @@ -148,13 +138,6 @@ def write_info_to_cache(cache_stream): cache_stream.write(markdown_line_handler(f'version: {to_code(platform.version())}', level=1)) -def write_options(arg0, cache_stream, arg2): - result = arg0.option_with_len() - write_markdown_tablet(crash_file=cache_stream, tablet=result) - # # DR 的游戏设置 - cache_stream.write(arg2) - - if __name__ == '__main__': os.chdir('../../') try: diff --git a/Difficult_Rocket/utils/options.py b/Difficult_Rocket/utils/options.py index f5bdfa6..530a9d6 100644 --- a/Difficult_Rocket/utils/options.py +++ b/Difficult_Rocket/utils/options.py @@ -5,6 +5,7 @@ # ------------------------------- import traceback +from io import StringIO from dataclasses import dataclass from typing import get_type_hints, Type, List, Union, Dict, Any, Callable, Tuple, Optional, TYPE_CHECKING @@ -137,6 +138,22 @@ class Options: option_list.append((key, value, value_t)) return [option_list, max_len_key, max_len_value, max_len_value_t] + def as_markdown(self) -> str: + value = self.option_with_len() + cache = StringIO() + option_len = max(value[1], len('Option')) + value_len = max(value[2], len('Value')) + value_type_len = max(value[3], len('Value Type')) + cache.write(f"| Option{' '*(option_len-3)}| Value{' '*(value_len-2)}| Value Type{' '*(value_type_len-7)}|\n") + cache.write(f'|:{"-" * (option_len+3)}|:{"-" * (value_len+3)}|:{"-" * (value_type_len + 3)}|\n') + for option, value, value_t in value[0]: + cache.write(f"| `{option}`{' '* (option_len - len(option))} " + f"| `{value}`{' '* (value_len - len(str(value)))} " + f"| `{value_t}`{' '* (value_type_len - len(str(value_t)))} |\n") + result = cache.getvalue() + cache.close() + return result + @classmethod def add_option(cls, name: str, value: Union[Callable, object]) -> Dict: if not hasattr(cls, 'options'): diff --git a/configs/main.toml b/configs/main.toml index fd82563..3899362 100644 --- a/configs/main.toml +++ b/configs/main.toml @@ -7,8 +7,8 @@ fonts_folder = "libs/fonts" [window] style = "None" -width = 1920 -height = 1017 +width = 1261 +height = 935 visible = true gui_scale = 1 caption = "Difficult Rocket v{DR_version}|DR_rs v{DR_Rust_get_version}" diff --git a/docs/src/update_logs.md b/docs/src/update_logs.md index 0ff3874..549172d 100644 --- a/docs/src/update_logs.md +++ b/docs/src/update_logs.md @@ -70,6 +70,10 @@ - Completely removed the `DR_rust` part - 现在 `client` 不会在 `setup()` 中调用 `DR_runtime` 的 `find_mods()` 方法 - Now `client` will not call the `find_mods()` method of `DR_runtime` in `setup()` +- `Difficult_Rocket.crash` + - Remove `write_options` method + - Remove `write_markdown_tablet` method + - Replace with `Option().as_markdown()` ### Changes @@ -101,6 +105,14 @@ - 大重构,移除定义,改为引用 - Big refactoring, remove definition, change to reference +### Add + +- `Difficult_Rocket.api.types.Options` + - 添加 `as_markdown` 方法 + - 用于方便的用人类可读的 Markdown 格式 直接输出一个已经实例化的 `Options` 类的所有字段 + - Add `as_markdown` method + - Used to easily output all fields of an instantiated `Options` class in a human-readable Markdown format + ### Docs - `howto/translate.md`