def clean_hi(cls, line: Line) -> Line: """Clean hearing impaired.""" line = line.sub( r"^([-‐\s<i>]+)?((\b[-A-Za-z.']+\s?#?\d?){1,2}(?!\.)([\[(][\w\s]*[\])])?:(?!\w)|[\[]+.*[\]:]+)(<\/?i>)?([\s])*", r"\1\5", ) line = cls.clean_parentheses(line) return line
def clean_dashes(line: Line) -> Line: return line.sub(r"^(<\/?i>)*([-‐]+)(\s+)?", r"\1- ")
def fix_styles(line: Line) -> Line: """Remove leftover style tags""" return line.sub(r"<\/?i>(\s*)<\/?i>", r"\1")
def fix_music(line: Line) -> Line: return line.sub(r"^#\s", "♪ ")
def fix_quote(line: Line) -> Line: return line.sub(r""", '"')
def fix_ampersand(line: Line) -> Line: return line.sub(r"&", "&")
def fix_hyphen(line: Line) -> Line: return line.sub(r"'’", "'")
def fix_space_punctuation(line: Line) -> Line: line = line.sub(r"(?<!^-)(?<!\.{3})\s+([.,!?]+)", r"\1") # remove space before punctuation line = line.sub(r"([.,!?]+)\s{2,}(?!$)", r"\1 ") # fix multiple spaces after punctuation return line
def trim_whitespace(line: Line) -> Line: """Trim multiple spaces between words, also if there are style tags in between""" return line.sub(r"\s+(<\/?i>)*\s*", r" \1").strip()
def fix_spaces(line: Line) -> Line: """Add missing spaces between sentences.""" return line.sub(r"\b([.?!]+)([A-Z][a-z])", r"\1 \2")
def clean_parentheses(line: Line) -> Line: """Clean parentheses ()[].""" return line.sub(r"[(\[*].*?[)\]*:]+", "")