ファイル
nizika_broadcast/common_module.py
T

46 行
977 B
Python

import unicodedata
class CommonModule:
@staticmethod
def is_wide (
c: str) \
-> bool:
return unicodedata.east_asian_width (c) in ['F', 'W', 'A']
@classmethod
def len_by_full (
cls,
string: str) \
-> float:
return sum (1 if cls.is_wide (c) else .5 for c in string)
@classmethod
def index_by_f2c (
cls,
string: str,
index: float) \
-> int:
i: int = 0
work: str = ''
for c in string:
work += c
if cls.len_by_full (work) > index:
break
else:
i += 1
return i
@classmethod
def mid_by_full (
cls,
string: str,
start: float,
length: float) \
-> str:
trimmed_left: str = string[cls.index_by_f2c (string, start):]
return trimmed_left[:cls.index_by_f2c (trimmed_left, length)]