Skip to content

Commit 39f9128

Browse files
committed
Enhanced style guide conformance via swift-format.
Still some doc comment lines longer than 80, as swift-format doesn't seem to reformat comments for line length?
1 parent ab8c71d commit 39f9128

File tree

2 files changed

+90
-56
lines changed

2 files changed

+90
-56
lines changed

Sources/Algorithms/LazySplitCollection.swift

Lines changed: 47 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
//
1010
//===----------------------------------------------------------------------===//
1111

12-
/// A collection that lazily splits a base collection into subsequences separated by elements that satisfy the
13-
/// given `whereSeparator` predicate.
12+
/// A collection that lazily splits a base collection into subsequences
13+
/// separated by elements that satisfy the given `whereSeparator` predicate.
1414
///
1515
/// - Note: This type is the result of
1616
///
@@ -56,18 +56,20 @@ extension LazySplitCollection.Iterator: IteratorProtocol {
5656
public typealias Element = Base.SubSequence
5757

5858
public mutating func next() -> Element? {
59-
/// Separators mark the points where we want to split (cut in two) the base collection, removing
60-
/// the separator in the process.
59+
/// Separators mark the points where we want to split (cut in two) the base
60+
/// collection, removing the separator in the process.
6161
///
62-
/// Each split yields two subsequences, though splitting at the start or end of a sequence yields
63-
/// an empty subsequence where there were no elements adjacent to the cut.
62+
/// Each split yields two subsequences, though splitting at the start or end
63+
/// of a sequence yields an empty subsequence where there were no elements
64+
/// adjacent to the cut.
6465
///
65-
/// Thus the maximum number of subsequences returned after iterating the entire base collection
66-
/// (including empty ones, if they are not omitted) will be at most one more than the number of
67-
/// splits made (equivalently, one more than the number of separators encountered).
66+
/// Thus the maximum number of subsequences returned after iterating the
67+
/// entire base collection (including empty ones, if they are not omitted)
68+
/// will be at most one more than the number of splits made (equivalently,
69+
/// one more than the number of separators encountered).
6870
///
69-
/// The number of splits is limited by `maxSplits`, and thus may be less than the total number
70-
/// of separators in the base collection.
71+
/// The number of splits is limited by `maxSplits`, and thus may be less
72+
/// than the total number of separators in the base collection.
7173
///
7274
/// [1, 2, 42, 3, 4, 42, 5].split(separator: 42,
7375
/// omittingEmptySubsequences: false)
@@ -89,47 +91,63 @@ extension LazySplitCollection.Iterator: IteratorProtocol {
8991
/// // last split -> [], [], []
9092
///
9193
/// Preconditions:
92-
/// `subsequenceStart` points to the beginning of the next subsequence to return (which may
93-
/// turn out to be empty), or the end of the base collection.
94+
/// `subsequenceStart` points to the beginning of the next subsequence to
95+
/// return (which may turn out to be empty), or the end of the base
96+
/// collection.
9497

9598
guard subsequenceStart < base.endIndex else {
9699
if !omittingEmptySubsequences && sequenceLength < separatorCount + 1 {
97-
/// We've reached the end of the base collection, and we're returning empty subsequences, but we
98-
/// haven't yet returned one more subsequence than the number of splits we've performed (i.e., the
99-
/// number of separators we've encountered). This happens when the last element of the base
100-
/// collection is a separator. Return one last empty subsequence.
100+
// We've reached the end of the base collection, and we're returning
101+
// empty subsequences, but we haven't yet returned one more subsequence
102+
// than the number of splits we've performed (i.e., the number of
103+
// separators we've encountered). This happens when the last element of
104+
// the base collection is a separator. Return one last empty
105+
// subsequence.
101106
sequenceLength += 1
102107
return base[subsequenceStart..<subsequenceStart]
103108
} else {
104109
return nil
105110
}
106111
}
107112

108-
/// The non-inclusive end of the next subsequence is marked by the next separator, or the end of the base collection.
113+
// The non-inclusive end of the next subsequence is marked by the next
114+
// separator, or the end of the base collection.
109115
var subsequenceEnd: Base.Index
110116

111-
/// The number of separators encountered thus far is identical to the number of splits performed thus far.
117+
// The number of separators encountered thus far is identical to the number
118+
// of splits performed thus far.
112119
if separatorCount < maxSplits {
113-
subsequenceEnd = base[subsequenceStart...].firstIndex(where: isSeparator) ?? base.endIndex
120+
subsequenceEnd =
121+
base[subsequenceStart...].firstIndex(where: isSeparator)
122+
?? base.endIndex
114123

115-
if omittingEmptySubsequences && base[subsequenceStart..<subsequenceEnd].isEmpty {
116-
/// Find the next sequence of non-separators.
117-
subsequenceStart = base[subsequenceEnd...].firstIndex(where: { !isSeparator($0) }) ?? base.endIndex
124+
if omittingEmptySubsequences
125+
&& base[subsequenceStart..<subsequenceEnd].isEmpty
126+
{
127+
// Find the next sequence of non-separators.
128+
subsequenceStart =
129+
base[subsequenceEnd...].firstIndex(where: { !isSeparator($0) })
130+
?? base.endIndex
118131
if subsequenceStart == base.endIndex {
119-
/// No non-separators left in the base collection, so we're done.
132+
// No non-separators left in the base collection, so we're done.
120133
return nil
121134
}
122-
subsequenceEnd = base[subsequenceStart...].firstIndex(where: isSeparator) ?? base.endIndex
135+
subsequenceEnd =
136+
base[subsequenceStart...].firstIndex(where: isSeparator)
137+
?? base.endIndex
123138
}
124139
} else {
125-
/// We've performed the requested number of splits. Return all remaining elements in the base collection as one final subsequence.
140+
// We've performed the requested number of splits. Return all remaining
141+
// elements in the base collection as one final subsequence.
126142
subsequenceEnd = base.endIndex
127143
}
128144

129145
defer {
130146
separatorCount += subsequenceEnd < base.endIndex ? 1 : 0
131147
sequenceLength += 1
132-
subsequenceStart = subsequenceEnd < base.endIndex ? base.index(after: subsequenceEnd) : base.endIndex
148+
subsequenceStart =
149+
subsequenceEnd < base.endIndex
150+
? base.index(after: subsequenceEnd) : base.endIndex
133151
}
134152

135153
return base[subsequenceStart..<subsequenceEnd]
@@ -239,7 +257,8 @@ extension LazyCollectionProtocol where Elements.Index == Index {
239257
}
240258
}
241259

242-
extension LazyCollectionProtocol where Element: Equatable, Elements.Index == Index {
260+
extension LazyCollectionProtocol
261+
where Element: Equatable, Elements.Index == Index {
243262
/// Lazily returns the longest possible subsequences of the collection, in order,
244263
/// around elements equal to the given element.
245264
///

Tests/SwiftAlgorithmsTests/LazySplitCollectionTests.swift

Lines changed: 43 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -10,62 +10,69 @@
1010
//===----------------------------------------------------------------------===//
1111

1212
import XCTest
13+
1314
@testable import Algorithms
1415

1516
final class LazySplitCollectionTests: XCTestCase {
1617
func testInts() {
17-
let nums = [1, 2, 42, 3, 4, 42, 5, 6, 42, 7,]
18+
let nums = [1, 2, 42, 3, 4, 42, 5, 6, 42, 7]
1819
let expectedResult = nums.split(separator: 42)
1920
let testResult = nums.lazy.split(separator: 42)
2021
XCTAssertEqualSequences(testResult, expectedResult)
2122
}
2223

2324
func testIntsWithMultipleAdjacentSeparators() {
24-
let nums = [1, 2, 42, 3, 4, 42, 42, 5, 6, 42, 7,]
25+
let nums = [1, 2, 42, 3, 4, 42, 42, 5, 6, 42, 7]
2526
let expectedResult = nums.split(separator: 42)
2627
let testResult = nums.lazy.split(separator: 42)
2728
XCTAssertEqualSequences(testResult, expectedResult)
2829
}
2930

3031
func testIntsWithTrailingMultipleAdjacentSeparators() {
31-
let nums = [1, 2, 42, 3, 4, 42, 42, 5, 6, 42, 7, 42, 42, 42,]
32+
let nums = [1, 2, 42, 3, 4, 42, 42, 5, 6, 42, 7, 42, 42, 42]
3233
let expectedResult = nums.split(separator: 42)
3334
let testResult = nums.lazy.split(separator: 42)
3435
XCTAssertEqualSequences(testResult, expectedResult)
3536
}
3637

3738
func testIntsAllSeparators() {
38-
let nums = [42, 42, 42, 42, 42,]
39+
let nums = [42, 42, 42, 42, 42]
3940
let expectedResult = nums.split(separator: 42)
4041
let testResult = nums.lazy.split(separator: 42)
4142
XCTAssertEqualSequences(testResult, expectedResult)
4243
}
4344

4445
func testIntsAllSeparatorsOmittingEmptySubsequences() {
45-
let nums = [42, 42, 42, 42, 42,]
46-
let expectedResult = nums.split(separator: 42, omittingEmptySubsequences: false)
47-
let testResult = nums.lazy.split(separator: 42, omittingEmptySubsequences: false)
46+
let nums = [42, 42, 42, 42, 42]
47+
let expectedResult = nums.split(
48+
separator: 42, omittingEmptySubsequences: false)
49+
let testResult = nums.lazy.split(
50+
separator: 42, omittingEmptySubsequences: false)
4851
XCTAssertEqualSequences(testResult, expectedResult)
4952
}
5053

5154
func testIntsStartWithSeparator() {
52-
let nums = [42, 1, 2, 42, 3, 4, 42, 5, 6, 42, 7,]
55+
let nums = [42, 1, 2, 42, 3, 4, 42, 5, 6, 42, 7]
5356
let expectedResult = nums.split(separator: 42)
5457
let testResult = nums.lazy.split(separator: 42)
5558
XCTAssertEqualSequences(testResult, expectedResult)
5659
}
5760

5861
func testIntsStartWithSeparatorOmittingEmptySubsequences() {
59-
let nums = [42, 1, 2, 42, 3, 4, 42, 5, 6, 42, 7,]
60-
let expectedResult = nums.split(separator: 42, omittingEmptySubsequences: false)
61-
let testResult = nums.lazy.split(separator: 42, omittingEmptySubsequences: false)
62+
let nums = [42, 1, 2, 42, 3, 4, 42, 5, 6, 42, 7]
63+
let expectedResult = nums.split(
64+
separator: 42, omittingEmptySubsequences: false)
65+
let testResult = nums.lazy.split(
66+
separator: 42, omittingEmptySubsequences: false)
6267
XCTAssertEqualSequences(testResult, expectedResult)
6368
}
6469

6570
func testIntsStartWithSeparatorMaxSplitsOmittingEmptySubsequences() {
66-
let nums = [42, 1, 2, 42, 3, 4, 42, 5, 6, 42, 7,]
67-
let expectedResult = nums.split(separator: 42, maxSplits: 2, omittingEmptySubsequences: false)
68-
let testResult = nums.lazy.split(separator: 42, maxSplits: 2, omittingEmptySubsequences: false)
71+
let nums = [42, 1, 2, 42, 3, 4, 42, 5, 6, 42, 7]
72+
let expectedResult = nums.split(
73+
separator: 42, maxSplits: 2, omittingEmptySubsequences: false)
74+
let testResult = nums.lazy.split(
75+
separator: 42, maxSplits: 2, omittingEmptySubsequences: false)
6976
XCTAssertEqualSequences(testResult, expectedResult)
7077
}
7178

@@ -85,22 +92,26 @@ final class LazySplitCollectionTests: XCTestCase {
8592

8693
func testSingleSeparatorOmittingEmptySubsequences() {
8794
let num = [42]
88-
let expectedResult = num.split(separator: 42, omittingEmptySubsequences: false)
89-
let testResult = num.lazy.split(separator: 42, omittingEmptySubsequences: false)
95+
let expectedResult = num.split(
96+
separator: 42, omittingEmptySubsequences: false)
97+
let testResult = num.lazy.split(
98+
separator: 42, omittingEmptySubsequences: false)
9099
XCTAssertEqualSequences(testResult, expectedResult)
91100
}
92101

93102
func testNonSeparatorSandwich() {
94-
let nums = [42, 1, 42,]
103+
let nums = [42, 1, 42]
95104
let expectedResult = nums.split(separator: 42)
96105
let testResult = nums.lazy.split(separator: 42)
97106
XCTAssertEqualSequences(testResult, expectedResult)
98107
}
99108

100109
func testNonSeparatorSandwichOmittingEmptySubsequences() {
101-
let nums = [42, 1, 42,]
102-
let expectedResult = nums.split(separator: 42, omittingEmptySubsequences: false)
103-
let testResult = nums.lazy.split(separator: 42, omittingEmptySubsequences: false)
110+
let nums = [42, 1, 42]
111+
let expectedResult = nums.split(
112+
separator: 42, omittingEmptySubsequences: false)
113+
let testResult = nums.lazy.split(
114+
separator: 42, omittingEmptySubsequences: false)
104115
XCTAssertEqualSequences(testResult, expectedResult)
105116
}
106117

@@ -119,14 +130,14 @@ final class LazySplitCollectionTests: XCTestCase {
119130
}
120131

121132
func testIntsWithMaxSplits() {
122-
let nums = [1, 2, 42, 3, 4, 42, 5, 6, 42, 7,]
133+
let nums = [1, 2, 42, 3, 4, 42, 5, 6, 42, 7]
123134
let expectedResult = nums.split(separator: 42, maxSplits: 2)
124135
let testResult = nums.lazy.split(separator: 42, maxSplits: 2)
125136
XCTAssertEqualSequences(testResult, expectedResult)
126137
}
127138

128139
func testZeroMaxSplits() {
129-
let nums = [1, 2, 42, 3, 4, 42, 5, 6, 42, 7,]
140+
let nums = [1, 2, 42, 3, 4, 42, 5, 6, 42, 7]
130141
let expectedResult = nums.split(separator: 42, maxSplits: 0)
131142
let testResult = nums.lazy.split(separator: 42, maxSplits: 0)
132143
XCTAssertEqualSequences(testResult, expectedResult)
@@ -140,21 +151,25 @@ final class LazySplitCollectionTests: XCTestCase {
140151
}
141152

142153
func testIntsWithoutOmittingEmptySubsequences() {
143-
let nums = [1, 2, 42, 3, 4, 42, 42, 5, 6, 42, 7,]
144-
let expectedResult = nums.split(separator: 42, omittingEmptySubsequences: false)
145-
let testResult = nums.lazy.split(separator: 42, omittingEmptySubsequences: false)
154+
let nums = [1, 2, 42, 3, 4, 42, 42, 5, 6, 42, 7]
155+
let expectedResult = nums.split(
156+
separator: 42, omittingEmptySubsequences: false)
157+
let testResult = nums.lazy.split(
158+
separator: 42, omittingEmptySubsequences: false)
146159
XCTAssertEqualSequences(testResult, expectedResult)
147160
}
148161

149162
func testStringWithoutOmittingEmptySubsequences() {
150163
let line = "BLANCHE: I don't want realism. I want magic!"
151-
let expectedResult = line.split(separator: " ", omittingEmptySubsequences: false)
152-
let testResult = line.lazy.split(separator: " ", omittingEmptySubsequences: false)
164+
let expectedResult = line.split(
165+
separator: " ", omittingEmptySubsequences: false)
166+
let testResult = line.lazy.split(
167+
separator: " ", omittingEmptySubsequences: false)
153168
XCTAssertEqualSequences(testResult, expectedResult)
154169
}
155170

156171
func testIntsWithWhereClosure() {
157-
let nums = [1, 2, 3, 4, 5, 6, 7,]
172+
let nums = [1, 2, 3, 4, 5, 6, 7]
158173
let isEven = { $0 % 2 == 0 }
159174
let expectedResult = nums.split(whereSeparator: isEven)
160175
let testResult = nums.lazy.split(whereSeparator: isEven)

0 commit comments

Comments
 (0)