# :project: markji-py
# :author: L-ING
# :copyright: (C) 2025 L-ING <hlf01@icloud.com>
# :license: MIT, see LICENSE for more details.
from markji.types import CardRootID
from markji.types.card import Card, CardBase, CardResult
[文档]
class ReferenceBuilder:
"""
卡片引用构建器
"""
def __init__(
self, content: str, card: CardResult | Card | CardRootID | str | None = None
):
"""
卡片引用构建器
:param str content: 内容
:param CardResult | Card | CardRootID | str | None card: 被引用的卡片
.. code-block:: python
from markji.editor import ReferenceBuilder
cards, _ = await client.search_cards("Internet", self_only=False)
ReferenceBuilder("Hello, World!", cards[0]).build()
"""
self._content = content
self._card = card
[文档]
def build(self) -> str:
"""
构建
:return: 包装后的内容
:rtype: str
"""
card_root_id = ""
if isinstance(self._card, CardBase):
card_root_id = self._card.root_id
elif isinstance(self._card, str):
card_root_id = self._card
result = f"ID/{card_root_id}" if card_root_id else ""
return f"[Card#{result}#{self._content}]"