Skip to content

Commit 9b43bfe

Browse files
committed
wip: use internal grapheme breaking
1 parent 538727a commit 9b43bfe

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

stdlib/public/core/UTF8SpanInternalHelpers.swift

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -131,10 +131,11 @@ extension UnsafeRawPointer {
131131
_internalInvariant((0..<end).contains(i))
132132
_internalInvariant(_isScalarAligned(i))
133133

134-
// TODO: call internals instead
135-
let str = _str(i..<end)
136-
let nextIdx = str.index(after: str.startIndex)
137-
return i + str.utf8.distance(from: str.startIndex, to: nextIdx)
134+
return _nextGraphemeClusterBoundary(startingAt: i) { idx in
135+
guard idx < end else { return nil }
136+
let (scalar, end) = _decodeScalar(startingAt: idx)
137+
return (scalar, end)
138+
}
138139
}
139140

140141
// @usableFromInline
@@ -144,10 +145,11 @@ extension UnsafeRawPointer {
144145
) -> Int {
145146
_internalInvariant(_isScalarAligned(i))
146147

147-
// TODO: call internals instead
148-
let str = _str(0..<i)
149-
let prevIdx = str.index(before: str.endIndex)
150-
return str.utf8.distance(from: str.startIndex, to: prevIdx)
148+
return _previousGraphemeClusterBoundary(endingAt: i) { idx in
149+
guard idx > 0 else { return nil }
150+
let (scalar, prior) = _decodeScalar(endingAt: idx)
151+
return (scalar, prior)
152+
}
151153
}
152154

153155
// @usableFromInline

0 commit comments

Comments
 (0)