StringWordBreaking.swift (swift-swift-5.8-RELEASE) | : | StringWordBreaking.swift (swift-swift-5.8.1-RELEASE) | ||
---|---|---|---|---|
skipping to change at line 32 | skipping to change at line 32 | |||
// var index = endIndex | // var index = endIndex | |||
// while index != startIndex { | // while index != startIndex { | |||
// c += 1 | // c += 1 | |||
// formIndex(before: &index) | // formIndex(before: &index) | |||
// } | // } | |||
// return c | // return c | |||
// } | // } | |||
// } | // } | |||
extension String { | extension String { | |||
@available(SwiftStdlib 5.7, *) | @available(SwiftStdlib 5.9, *) | |||
var _words: [String] { | var _words: [String] { | |||
var result: [String] = [] | var result: [String] = [] | |||
var i = startIndex | var i = startIndex | |||
while i < endIndex { | while i < endIndex { | |||
let start = i | let start = i | |||
let end = _wordIndex(after: i) | let end = _wordIndex(after: i) | |||
let substr = self[start ..< end] | let substr = self[start ..< end] | |||
result.append(String(substr)) | result.append(String(substr)) | |||
i = end | i = end | |||
} | } | |||
return result | return result | |||
} | } | |||
@available(SwiftStdlib 5.7, *) | @available(SwiftStdlib 5.9, *) | |||
var _wordsBackwards: [String] { | var _wordsBackwards: [String] { | |||
var result: [String] = [] | var result: [String] = [] | |||
var i = endIndex | var i = endIndex | |||
while i > startIndex { | while i > startIndex { | |||
let end = i | let end = i | |||
let start = _wordIndex(before: i) | let start = _wordIndex(before: i) | |||
let substr = self[start ..< end] | let substr = self[start ..< end] | |||
result.append(String(substr)) | result.append(String(substr)) | |||
i = start | i = start | |||
} | } | |||
return result | return result | |||
} | } | |||
} | } | |||
if #available(SwiftStdlib 5.7, *) { | if #available(SwiftStdlib 5.9, *) { | |||
StringWordBreaking.test("word breaking") { | StringWordBreaking.test("word breaking") { | |||
for wordBreakTest in wordBreakTests { | for wordBreakTest in wordBreakTests { | |||
expectEqual( | expectEqual( | |||
wordBreakTest.1, | wordBreakTest.1, | |||
wordBreakTest.0._words, | wordBreakTest.0._words, | |||
"string: \(String(reflecting: wordBreakTest.0))") | "string: \(String(reflecting: wordBreakTest.0))") | |||
expectEqual( | expectEqual( | |||
wordBreakTest.1.reversed(), | wordBreakTest.1.reversed(), | |||
wordBreakTest.0._wordsBackwards, | wordBreakTest.0._wordsBackwards, | |||
"string: \(String(reflecting: wordBreakTest.0))") | "string: \(String(reflecting: wordBreakTest.0))") | |||
skipping to change at line 138 | skipping to change at line 138 | |||
func getUTF16Array(from string: String) -> [UInt16] { | func getUTF16Array(from string: String) -> [UInt16] { | |||
var result: [UInt16] = [] | var result: [UInt16] = [] | |||
for cp in string.utf16 { | for cp in string.utf16 { | |||
result.append(cp) | result.append(cp) | |||
} | } | |||
return result | return result | |||
} | } | |||
if #available(SwiftStdlib 5.7, *) { | if #available(SwiftStdlib 5.9, *) { | |||
StringWordBreaking.test("word breaking foreign") { | StringWordBreaking.test("word breaking foreign") { | |||
for wordBreakTest in wordBreakTests { | for wordBreakTest in wordBreakTests { | |||
let foreignTest = NonContiguousNSString( | let foreignTest = NonContiguousNSString( | |||
getUTF16Array(from: wordBreakTest.0) | getUTF16Array(from: wordBreakTest.0) | |||
) | ) | |||
let test = foreignTest as String | let test = foreignTest as String | |||
expectTrue(test._guts._isForeign()) | expectTrue(test._guts._isForeign()) | |||
expectEqual( | expectEqual( | |||
wordBreakTest.1, | wordBreakTest.1, | |||
End of changes. 4 change blocks. | ||||
4 lines changed or deleted | 4 lines changed or added |