MCPcopy Create free account
hub / github.com/davidblewett/rure-python / decode_last_utf8

Function decode_last_utf8

regex/src/utf8.rs:123–142  ·  view source on GitHub ↗

Like `decode_utf8`, but decodes the last UTF-8 sequence in `src` instead of the first.

(src: &[u8])

Source from the content-addressed store, hash-verified

121/// Like `decode_utf8`, but decodes the last UTF-8 sequence in `src` instead
122/// of the first.
123pub fn decode_last_utf8(src: &[u8]) -> Option<(char, usize)> {
124 if src.is_empty() {
125 return None;
126 }
127 let mut start = src.len() - 1;
128 if src[start] <= 0x7F {
129 return Some((src[start] as char, 1));
130 }
131 while start > src.len().saturating_sub(4) {
132 start -= 1;
133 if is_start_byte(src[start]) {
134 break;
135 }
136 }
137 match decode_utf8(&src[start..]) {
138 None => None,
139 Some((_, n)) if n < src.len() - start => None,
140 Some((cp, n)) => Some((cp, n)),
141 }
142}
143
144fn is_start_byte(b: u8) -> bool {
145 b & 0b11_000000 != 0b1_0000000

Callers 2

pFunction · 0.85
previous_charMethod · 0.85

Calls 4

is_start_byteFunction · 0.85
decode_utf8Function · 0.85
is_emptyMethod · 0.45
lenMethod · 0.45

Tested by

no test coverage detected