Files
SwiftFormat/Sources/Rules/TrailingSpace.swift

46 lines
1.3 KiB
Swift

//
// TrailingSpace.swift
// SwiftFormat
//
// Created by Nick Lockwood on 11/24/16.
// Copyright © 2024 Nick Lockwood. All rights reserved.
//
import Foundation
public extension FormatRule {
/// Remove trailing space from the end of lines, as it has no semantic
/// meaning and leads to noise in commits.
static let trailingSpace = FormatRule(
help: "Remove trailing space at end of a line.",
orderAfter: [.wrap, .wrapArguments],
options: ["trim-whitespace"]
) { formatter in
formatter.forEach(.space) { i, _ in
switch formatter.token(at: i + 1) {
case nil, .linebreak:
if formatter.options.truncateBlankLines || formatter.token(at: i - 1)?.isLinebreak == false {
formatter.removeToken(at: i)
}
case .stringBody("") where formatter.options.truncateBlankLines:
formatter.removeTokens(in: i ... i + 1)
default:
break
}
}
} examples: {
"""
```diff
- let foo: Foo␣
+ let foo: Foo
- ␣␣␣␣
+
- func bar() {␣␣
+ func bar() {
␣␣␣␣print("foo")
}
```
"""
}
}