49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
|
from typing import Any
|
||
|
class FitzBlockWrapper:
|
||
|
def __init__(self, block):
|
||
|
self.x0, self.y0, self.x1, \
|
||
|
self.y1, self.text, \
|
||
|
self.block_number, self.block_type = block
|
||
|
|
||
|
self.x0 = int(self.x0)
|
||
|
self.x1 = int(self.x1)
|
||
|
self.y0 = int(self.y0)
|
||
|
self.y1 = int(self.y1)
|
||
|
self.block_number = int(self.block_number)
|
||
|
self.block_type = int(self.block_type)
|
||
|
|
||
|
def __str__(self):
|
||
|
return str((
|
||
|
self.x0, self.y0, self.x1, self.y1, self.text
|
||
|
))
|
||
|
|
||
|
def __repl__(self):
|
||
|
return self.__str__()
|
||
|
|
||
|
def words_in_superstring(words: list[str], superstring: str) -> bool:
|
||
|
for word in words:
|
||
|
if not str(word).lower() in str(superstring).lower():
|
||
|
return False
|
||
|
return True
|
||
|
|
||
|
def split_by_lambda(arr: list[Any], func):
|
||
|
output = []
|
||
|
current = []
|
||
|
for item in arr:
|
||
|
if func(item):
|
||
|
output.append(current)
|
||
|
current = []
|
||
|
else:
|
||
|
current.append(item)
|
||
|
|
||
|
output.append(current)
|
||
|
return output
|
||
|
|
||
|
def get_block_by_x_value(arr: list[FitzBlockWrapper], xvalue: int) -> FitzBlockWrapper:
|
||
|
for item in arr:
|
||
|
if item.x0 == xvalue:
|
||
|
return item
|
||
|
|
||
|
def remove_block_by_x_value(arr: list[FitzBlockWrapper], xvalue: int) -> list[FitzBlockWrapper]:
|
||
|
return [i for i in arr if not i.x0 == xvalue]
|