from __future__ import annotations import json import re from pathlib import Path from typing import Any, Dict, Iterable, Iterator, List, Optional, Protocol, Set, Tuple, TypeVar from md_types import BlockEvent, BlockStyle, FrontMatter, StyleUpdateEvent FRONTMATTER_PATTERN = re.compile(r"^---\s*$") INCLUDE_WIKILINK_PATTERN = re.compile(r"^\s*!\[\[(.+?)\]\]\s*$") INCLUDE_DIRECTIVE_PATTERN = re.compile(r"^\s*\{\s*\.include\s+(.+?)\s*\}\s*$") ASCII_BLOCK_PATTERN = re.compile( r"^\s*#\[(?P