MCPcopy Create free account
hub / github.com/Freedium-cfd/web / UTF16Handler

Class UTF16Handler

rl_string_helper/rl_string_helper/string_helper.py:22–125  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

20
21
22class UTF16Handler:
23 def __init__(self, default_bang_char: str = "R"):
24 logger.trace(
25 f"Initializing UTF16Handler with default_bang_char: {default_bang_char}"
26 )
27 self._default_bang_char = default_bang_char
28
29 def pre_utf_16_bang(
30 self, string: str, string_pos_matrix: list
31 ) -> tuple[str, list, list[tuple[int, int, int]]]:
32 logger.trace("Starting pre_utf_16_bang method")
33 utf_16_bang_list: list[tuple[int, int, int]] = []
34 string_len_utf_16 = len(string.encode("utf-16-le")) // 2
35 logger.debug(f"UTF-16 length of string: {string_len_utf_16}")
36 if string_len_utf_16 == len(string):
37 logger.trace("String doesn't contain multibyte characters")
38 return string, string_pos_matrix, utf_16_bang_list
39
40 i = 0
41 while len(string) - 1 > i:
42 logger.debug(f"Processing character at index {i}")
43 new_i = string_pos_matrix[i]
44 char = string[new_i]
45 char_len = len(char.encode("utf-16-le")) // 2
46 if char_len == 2:
47 logger.debug(f"Multibyte character found at index {i}")
48 char_len_dif = char_len - 1
49 char_present = self._default_bang_char * char_len_dif
50 string, string_pos_matrix = self._paste_char(
51 string, string_pos_matrix, new_i + 1, char_present
52 )
53 logger.trace(
54 f"Mutation: Inserted '{char_present}' at index {new_i + 1}"
55 )
56 i += 1
57 utf_16_bang_list.append((i, char_len_dif, i))
58 i += 1
59
60 logger.trace("Finished pre_utf_16_bang method")
61 return string, string_pos_matrix, utf_16_bang_list
62
63 def post_utf_16_bang(
64 self,
65 string: StringAssignmentMixin,
66 string_pos_matrix: list,
67 utf_16_bang_list: list,
68 ):
69 logger.trace("Starting post_utf_16_bang method")
70 string = StringAssignmentMixin(str(string))
71 post_transbang = 0
72 for bang_pos, char_len, old_pos in utf_16_bang_list:
73 logger.debug(f"Processing bang at position {bang_pos}")
74 string, string_pos_matrix = self._delete_char(
75 string,
76 string_pos_matrix,
77 bang_pos - post_transbang,
78 char_len,
79 old_pos - post_transbang,

Callers 2

test_nmultibyte_emojiMethod · 0.90
__init__Method · 0.85

Calls

no outgoing calls

Tested by 1

test_nmultibyte_emojiMethod · 0.72