#!/usr/bin/env python # License: GPLv3 Copyright: 2021, Kovid Goyal from typing import Iterable, List, Union from . import subseq_matcher def match( input_data: Union[str, bytes, Iterable[Union[str, bytes]]], query: str, threads: int = 0, positions: bool = False, level1: str = '/', level2: str = '-_0123456789', level3: str = '.', limit: int = 0, mark_before: str = '', mark_after: str = '', delimiter: str = '\n' ) -> List[str]: if isinstance(input_data, str): idata = [x.encode('utf-8') for x in input_data.split(delimiter)] elif isinstance(input_data, bytes): idata = input_data.split(delimiter.encode('utf-8')) else: idata = [x.encode('utf-8') if isinstance(x, str) else x for x in input_data] query = query.lower() level1 = level1.lower() level2 = level2.lower() level3 = level3.lower() data = subseq_matcher.match( idata, (level1, level2, level3), query, positions, limit, threads, mark_before, mark_after, delimiter) if data is None: return [] return list(filter(None, data.split(delimiter or '\n')))