git @ Cat's Eye Technologies Feedmark / master src / feedmark / models.pyi
master

Tree @master (Download .tar.gz)

models.pyi @master — raw · history · blame

# Copyright (c) 2026 Chris Pressey, Cat's Eye Technologies
# This file is distributed under an MIT license.  See LICENSES/ directory.
# SPDX-License-Identifier: LicenseRef-MIT-X-Feedmark

from collections import OrderedDict
from datetime import datetime
from typing import Any, Iterator, Mapping, TypeAlias, TypedDict

from marko.block import LinkRefDefs
from marko.element import Element
from marko.md_renderer import MarkdownRenderer

JSONObject: TypeAlias = dict[str, Any]
Refdex: TypeAlias = JSONObject
RefdexMapping: TypeAlias = Mapping[str, Mapping[str, Any]]
Properties: TypeAlias = OrderedDict[str, str | list[str]]

class _ImageRecordBase(TypedDict):
    description: str
    source: str

class ImageRecord(_ImageRecordBase, total=False):
    link: str

def rewrite_link_ref_defs(
    refdex: RefdexMapping, link_ref_defs: LinkRefDefs
) -> LinkRefDefs: ...

class PropertyCollection:
    renderer: MarkdownRenderer
    properties: Properties
    def __init__(self) -> None: ...
    def add_property(self, kind: str, key: str, value: str) -> None: ...
    def parse_property(self, listitem_text: str) -> tuple[str, str, str]: ...
    def add_property_listitem(self, element: Element) -> None: ...

class Document(PropertyCollection):
    filename: str
    title: str
    sections: list[Section]
    link_ref_defs: LinkRefDefs
    def __init__(
        self,
        *args: Any,
        renderer: MarkdownRenderer | None = None,
        filename: str | None = None,
        **kwargs: Any,
    ) -> None: ...
    def set_title(self, title: str) -> None: ...
    @property
    def header_comment(self) -> str: ...
    def has_header_comment(self) -> bool: ...
    def add_to_header_comment(self, element: Element) -> None: ...
    @property
    def preamble(self) -> str: ...
    def add_to_preamble(self, element: Element) -> None: ...
    def has_preamble(self) -> bool: ...
    def rewrite_link_ref_defs(self, refdex: RefdexMapping) -> None: ...
    def global_link_ref_defs(self) -> LinkRefDefs: ...
    def to_json_data(
        self,
        htmlize: bool = False,
        ordered: bool = False,
        link_ref_defs: LinkRefDefs | None = None,
    ) -> dict[str, Any]: ...

class Section(PropertyCollection):
    document: Document | None
    title: str
    images: list[ImageRecord]
    def __init__(
        self,
        title: str,
        *args: Any,
        renderer: MarkdownRenderer | None = None,
        **kwargs: Any,
    ) -> None: ...
    def collect_image_children(self, element: Element) -> Iterator[ImageRecord]: ...
    def add_image_paragraph(self, element: Element) -> None: ...
    @property
    def body(self) -> str: ...
    def add_to_body(self, element: Element) -> None: ...
    @property
    def publication_date(self) -> datetime: ...
    @property
    def anchor(self) -> str: ...
    def to_json_data(
        self,
        htmlize: bool = False,
        ordered: bool = False,
        link_ref_defs: LinkRefDefs | None = None,
    ) -> dict[str, Any]: ...