From 45e00dfec25abfff6d05381a66c30e02c7799538 Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Sat, 13 Jun 2026 09:50:58 +0800 Subject: [PATCH] feat: add some extractor --- src/frontend/extractor/aust_extractor.py | 12 ++++++++++++ src/frontend/extractor/common.py | 16 +++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/frontend/extractor/aust_extractor.py b/src/frontend/extractor/aust_extractor.py index 1dc3977..261f055 100644 --- a/src/frontend/extractor/aust_extractor.py +++ b/src/frontend/extractor/aust_extractor.py @@ -1,3 +1,5 @@ +from typing import cast +from pylatexenc.latexwalker import LatexNode, LatexMacroNode from .common import Extractor class AustExtractor(Extractor): @@ -5,4 +7,14 @@ class AustExtractor(Extractor): def __init__(self) -> None: pass + def extract_include_command(self, node: LatexNode) -> str | None: + if not isinstance(node, LatexMacroNode): + return None + macro_name = cast(str, node.macroname) + match macro_name: + case 'include' | 'input': + # TODO: handle include command + return None + case _: + return None diff --git a/src/frontend/extractor/common.py b/src/frontend/extractor/common.py index 5cc5b68..8c6bed6 100644 --- a/src/frontend/extractor/common.py +++ b/src/frontend/extractor/common.py @@ -1,7 +1,21 @@ from abc import ABC, abstractmethod +from pylatexenc.latexwalker import LatexNode, LatexMacroNode class Extractor(ABC): - pass + """ + An abstract base class for all extractors. + + Extractors are used to extract information from LaTeX nodes. + """ + @abstractmethod + def extract_include_command(self, node: LatexNode) -> str | None: + """ + Extract the include command from a LaTeX node. + + :param node: The LaTeX node to extract the include command from. + :return: The path to the include file, otherwise None. + """ + pass