{
"event": "PreToolUse",
"tool_name": "Read",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/crawler\/src\/domain\/ports\/html_parser_port.py"
}
}
{
"tool_response": {
"type": "text",
"file": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/crawler\/src\/domain\/ports\/html_parser_port.py",
"content": "from __future__ import annotations\n\nfrom abc import ABC, abstractmethod\nfrom dataclasses import dataclass\n\nfrom src.domain.value_objects.body_stats import BodyStats\nfrom src.domain.value_objects.head_meta import HeadMeta\nfrom src.domain.value_objects.hreflang import HreflangEntry\nfrom src.domain.value_objects.open_graph_meta import OpenGraphMeta\nfrom src.domain.value_objects.twitter_meta import TwitterMeta\n\n\n@dataclass(frozen=True, slots=True)\nclass ParsedDocument:\n head: HeadMeta\n og: OpenGraphMeta\n twitter: TwitterMeta\n body: BodyStats\n hreflang: tuple[HreflangEntry, ...]\n internal_links: tuple[str, ...]\n external_links: tuple[str, ...]\n image_specs: tuple[tuple[str, str | None, str | None, int | None, int | None], ...]\n\n\nclass HtmlParserPort(ABC):\n @abstractmethod\n def parse(self, html: str, *, base_url: str) -> ParsedDocument: ...\n",
"numLines": 28,
"startLine": 1,
"totalLines": 28
}
}
}