实现 Post.content 相关扩展协议 (#553)

*  `post` 新增 `get_content()` 方法

* 🚨 make linter happy

* 💄 auto fix by pre-commit hooks

* 🐛 fix: 调整函数使用

* 💄 auto fix by pre-commit hooks

*  转用函数处理文本

* 💄 auto fix by pre-commit hooks

* 🔨 使用`Dict`存储`content_handlers`

* 💄 auto fix by pre-commit hooks

* 🎨 fix

* :arts: 简化函数使用

* 🐛 移除`Theme`的过时参数

* 🗑️ 复用 `self.plain_content`

* 💄 auto fix by pre-commit hooks

*  注册式装饰器写法

* 💄 auto fix by pre-commit hooks

* 🐛 fix

* 💄 auto fix by pre-commit hooks

* :feat: 通用纯文本处理函数

* 💄 auto fix by pre-commit hooks

* :downgrade: 复用`==`处理标题

* 🎨 简化(?)写法

*  测试修复

* ♻️ via ContentSupport extensions

* 🐛 fix test

* 💄 auto fix by pre-commit hooks

* 🐛 for clean text

* 🐛 fix

* 💄 auto fix by pre-commit hooks

* fix: for xml

* 💄 auto fix by pre-commit hooks

* chore: art

* 💄 auto fix by pre-commit hooks

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
Cateon Huo
2024-08-04 18:39:12 +08:00
committed by GitHub
parent 0c1012b0f4
commit 9e5dcb3912
18 changed files with 363 additions and 46 deletions
+17 -9
View File
@@ -1,5 +1,6 @@
from time import time
from typing import Any
from inspect import cleandoc
import pytest
from nonebug.app import App
@@ -48,7 +49,7 @@ def mock_platform(app: App):
async def parse(self, raw_post: "RawPost") -> "Post":
return Post(
self,
raw_post["text"],
content=raw_post["text"],
url="http://t.tt/" + str(self.get_id(raw_post)),
nickname="MockNick",
)
@@ -67,12 +68,15 @@ def mock_platform(app: App):
async def test_display(mock_platform):
from nonebot_bison.post import Post
post = Post(
mock_platform,
post1_content = cleandoc(
"Rebum delenit iusto augue in rebum sanctus diam stet clita voluptua amet tempor sea in.\n"
"Vel ullamcorper dolore clita eos amet tempor velit amet in.\n"
"Vero hendrerit vero diam et lorem blandit ex diam ex amet.\n"
"Voluptua et sed diam erat et diam lorem lorem no euismod sadipscing rebum feugiat est elitr autem.\n",
)
post1 = Post(
mock_platform,
content=post1_content,
title="Ipsum consectetuer voluptua eirmod aliquyam dolore eu volutpat ipsum ipsum eirmod nulla.",
images=[
b"\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x01\x00\x00\x00\x01\x08\x06\x00\x00\x00\x1f\x15\xc4\x89",
@@ -87,8 +91,8 @@ async def test_display(mock_platform):
description="Labore amet ut invidunt dolor consectetuer ipsum sadipscing sed minim diam rebum justo tincidunt.",
)
assert (
str(post)
== rf"""## Post: {id(post):X} ##
str(post1)
== rf"""## Post: {id(post1):X} ##
Rebum delenit iusto augue in rebum sanctus diam stet clita voluptua amet tempor sea in.
Vel ullamcorper dolore clita eos amet tempor velit amet in.
@@ -106,12 +110,16 @@ Vero hendrerit vero diam et lorem blandit ex diam ex...
- description: 'Labore amet ut invidunt dolor consectetuer ipsum sadipscing sed minim diam rebum justo tincidunt.'
"""
) # noqa: E501
post2 = Post(
mock_platform,
post2_content = cleandoc(
"Rebum delenit iusto augue in rebum sanctus diam stet clita voluptua amet tempor sea in.\n"
"Vel ullamcorper dolore clita eos amet tempor velit amet in.\n"
"Vero hendrerit vero diam et lorem blandit ex diam ex amet.\n"
"Voluptua et sed diam erat et diam lorem lorem no euismod sadipscing rebum feugiat est elitr autem.\n",
)
post2 = Post(
mock_platform,
content=post2_content,
title="Ipsum consectetuer voluptua eirmod aliquyam dolore eu volutpat ipsum ipsum eirmod nulla.",
images=[
b"\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x01\x00\x00\x00\x01\x08\x06\x00\x00\x00\x1f\x15\xc4\x89",
@@ -124,7 +132,7 @@ Vero hendrerit vero diam et lorem blandit ex diam ex...
),
nickname="Mock2",
description="Labore amet ut invidunt dolor consectetuer ipsum sadipscing sed minim diam rebum justo tincidunt.",
repost=post,
repost=post1,
)
assert (
str(post2)
@@ -146,7 +154,7 @@ Vero hendrerit vero diam et lorem blandit ex diam ex...
- description: 'Labore amet ut invidunt dolor consectetuer ipsum sadipscing sed minim diam rebum justo tincidunt.'
转发:
## Post: {id(post):X} ##
## Post: {id(post1):X} ##
Rebum delenit iusto augue in rebum sanctus diam stet clita voluptua amet tempor sea in.
Vel ullamcorper dolore clita eos amet tempor velit amet in.