Loading...
No commits yet
Not committed History
Blame
_parse_latex_logs.py • 1.3 KB
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# File: src/scitex_writer/_utils/_parse_latex_logs.py

"""
LaTeX error and warning parsing from compilation output.

Simple parsing of LaTeX errors and warnings from stdout/stderr.
"""

from __future__ import annotations

from pathlib import Path
from typing import List, Tuple

from .._dataclasses import LaTeXIssue


def parse_compilation_output(
    output: str, log_file: Path = None
) -> Tuple[List[LaTeXIssue], List[LaTeXIssue]]:
    """
    Parse errors and warnings from compilation output.

    Args:
        output: Compilation output (stdout + stderr)
        log_file: Optional path to .log file (unused, for compatibility)

    Returns:
        Tuple of (error_issues, warning_issues)
    """
    errors = []
    warnings = []

    for line in output.split("\n"):
        # LaTeX error pattern: "! Error message"
        if line.startswith("!"):
            error_text = line[1:].strip()
            if error_text:
                errors.append(LaTeXIssue(type="error", message=error_text))

        # LaTeX warning pattern
        elif "warning" in line.lower():
            warnings.append(LaTeXIssue(type="warning", message=line.strip()))

    return errors, warnings


__all__ = [
    "parse_compilation_output",
]

# EOF