# Path: dataproperty/_function.py
# def strip_ansi_escape(unicode_str: str) -> str:
#     return _ansi_escape.sub("", unicode_str)
# 
# Path: dataproperty/_line_break.py
# class LineBreakHandling(Enum):
#     NOP = 0
#     REPLACE = 1
#     ESCAPE = 2


import html
import re
from typing import Any, Optional, Tuple, Union
from mbstrdecoder import MultiByteStrDecoder
from ._function import strip_ansi_escape
from ._line_break import LineBreakHandling
        return value

    if value is None:
        return LineBreakHandling.NOP

    return LineBreakHandling[value.upper()]  # type: ignore


class Preprocessor:
    @property
    def line_break_handling(self) -> Optional[LineBreakHandling]:
        return self.__line_break_handling

    @line_break_handling.setter
    def line_break_handling(self, value: Optional[LineBreakHandling]):
        self.__line_break_handling = normalize_lbh(value)

    def __init__(
        self,
        strip_str: Optional[Union[str, bytes]] = None,
        replace_tabs_with_spaces: bool = True,
        tab_length: int = 2,
        line_break_handling: Optional[LineBreakHandling] = None,
        line_break_repl: str = " ",
        dequote: bool = False,
        is_escape_html_tag: bool = False,
        is_escape_formula_injection: bool = False,
    ) -> None:
        self.strip_str: Optional[Union[str, bytes]] = strip_str
        self.replace_tabs_with_spaces = replace_tabs_with_spaces

# Path: dataproperty/_function.py
# def strip_ansi_escape(unicode_str: str) -> str:
#     return _ansi_escape.sub("", unicode_str)
# 
# Path: dataproperty/_line_break.py
# class LineBreakHandling(Enum):
#     NOP = 0
#     REPLACE = 1
#     ESCAPE = 2


# Path: dataproperty/_preprocessor.py
import html
import re
from typing import Any, Optional, Tuple, Union
from mbstrdecoder import MultiByteStrDecoder
from ._function import strip_ansi_escape
from ._line_break import LineBreakHandling

        return value

    if value is None:
        return LineBreakHandling.NOP

    return LineBreakHandling[value.upper()]  # type: ignore


class Preprocessor:
    @property
    def line_break_handling(self) -> Optional[LineBreakHandling]:
        return self.__line_break_handling

    @line_break_handling.setter
    def line_break_handling(self, value: Optional[LineBreakHandling]):
        self.__line_break_handling = normalize_lbh(value)

    def __init__(
        self,
        strip_str: Optional[Union[str, bytes]] = None,
        replace_tabs_with_spaces: bool = True,
        tab_length: int = 2,
        line_break_handling: Optional[LineBreakHandling] = None,
        line_break_repl: str = " ",
        dequote: bool = False,
        is_escape_html_tag: bool = False,
        is_escape_formula_injection: bool = False,
    ) -> None:
        self.strip_str: Optional[Union[str, bytes]] = strip_str
        self.replace_tabs_with_spaces = replace_tabs_with_spaces

        self.tab_length = tab_length