"""AssertionRegexBase class."""
import abc
import re
from typing import TYPE_CHECKING, Optional
from text_lint.operations.assertions.bases.assertion_base import AssertionBase
from text_lint.utilities.translations import _
if TYPE_CHECKING: # pragma: no cover
from text_lint.operations.assertions.args.split import AliasYamlSplit
YAML_ASSERTION_REGEX_EXAMPLE_OPTIONS = _(
""" - 'save' will store capture groups as save ids for validation.
(The default behaviour is not to save any capture groups.)
- 'splits' will split the specified capture groups into more elements.
(The default 'separator' is any white space.)"""
)
[docs]
class AssertionRegexBase(AssertionBase, abc.ABC):
"""Regex based assertion operation base class."""
__regex_flags = re.DOTALL
[docs]
def __init__(
self,
name: str,
regex: str,
save: Optional[str] = None,
splits: Optional["AliasYamlSplit"] = None,
) -> None:
"""Initialize AssertionRegexBase instances.
:param name: The name of the configured assertion.
:param regex: A string containing a valid regular expression.
:param save: An optional save id to create for matched values.
:param splits: Optional text splitting configuration for matched values.
:raises: TypeError
"""
self.regex = re.compile(regex, self.__regex_flags)
super().__init__(name, save, splits)