From b70abdc28671f20c242dfd564fabc5082c20add5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Ke=C3=9Fler?= Date: Thu, 17 Feb 2022 22:31:44 +0100 Subject: [PATCH] add some error handling --- PyTeX/format/errors.py | 29 +++++++++++++++++++++++++++++ PyTeX/format/macros.py | 7 ++++--- 2 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 PyTeX/format/errors.py diff --git a/PyTeX/format/errors.py b/PyTeX/format/errors.py new file mode 100644 index 0000000..a183eae --- /dev/null +++ b/PyTeX/format/errors.py @@ -0,0 +1,29 @@ + +class PyTeXError(Exception): + pass + + +class PyTeXFormattingError(PyTeXError): + pass + + +class PyTeXBuildError(PyTeXError): + pass + + +class PyTeXMacroError(PyTeXError): + pass + + +class PyTeXInvalidMacroUsageError(PyTeXMacroError): + pass + + +class PyTeXInvalidBeginMacroCodeUsageError(PyTeXInvalidMacroUsageError): + pass + + +class PyTeXInvalidEndMacroCodeUsageError(PyTeXInvalidMacroUsageError): + pass + + diff --git a/PyTeX/format/macros.py b/PyTeX/format/macros.py index 597e996..a4e56f9 100644 --- a/PyTeX/format/macros.py +++ b/PyTeX/format/macros.py @@ -4,6 +4,7 @@ from typing import List, Union, Tuple, Dict from .constants import * from .enums import FormatterProperty, Argument, FormatterMode from abc import ABC, abstractmethod +from .errors import * class MacroReplacement: @@ -134,7 +135,7 @@ class ConfigBeginMacro(SingleLineMacro): super(ConfigBeginMacro, self).__init__(FORMATTER_PREFIX + INFILE_CONFIG_BEGIN_CONFIG) def _apply(self, line: str, formatter) -> Union[str, List[str]]: - if not formatter.mode == FormatterMode.normal: + if formatter.mode not in [FormatterMode.normal, FormatterMode.meta]: raise NotImplementedError # invalid config begin formatter.mode = FormatterMode.drop return [] @@ -157,7 +158,7 @@ class MacroCodeBeginMacro(SingleLineMacro): def _apply(self, line: str, formatter) -> Union[str, List[str]]: if not formatter.mode == FormatterMode.meta: - raise NotImplementedError + raise PyTeXInvalidBeginMacroCodeUsageError formatter.mode = FormatterMode.macrocode return r'% \begin{macrocode}' @@ -168,7 +169,7 @@ class MacroCodeEndMacro(SingleLineMacro): def _apply(self, line: str, formatter) -> Union[str, List[str]]: if not formatter.mode == FormatterMode.macrocode: - raise NotImplementedError + raise PyTeXInvalidEndMacroCodeUsageError formatter.mode = FormatterMode.meta return r'% \end{macrocode}'