mirror of
https://github.com/realm/SwiftLint.git
synced 2026-06-06 20:18:40 +00:00
[number_separator] Allow year integer literals to be written without separator
This commit is contained in:
@@ -27,9 +27,12 @@ public struct NumberSeparatorRule: OptInRule, CorrectableRule, ConfigurationProv
|
||||
private func violatingRanges(in file: File) -> [(NSRange, String)] {
|
||||
let numberTokens = file.syntaxMap.tokens.filter { SyntaxKind(rawValue: $0.type) == .number }
|
||||
return numberTokens.compactMap { (token: SyntaxToken) -> (NSRange, String)? in
|
||||
guard let content = contentFrom(file: file, token: token),
|
||||
isDecimal(number: content) else {
|
||||
return nil
|
||||
guard
|
||||
let content = contentFrom(file: file, token: token),
|
||||
isDecimal(number: content),
|
||||
!isYearLiteral(number: content)
|
||||
else {
|
||||
return nil
|
||||
}
|
||||
|
||||
let signs = CharacterSet(charactersIn: "+-")
|
||||
@@ -108,6 +111,14 @@ public struct NumberSeparatorRule: OptInRule, CorrectableRule, ConfigurationProv
|
||||
return prefixes.filter { lowercased.hasPrefix($0) }.isEmpty
|
||||
}
|
||||
|
||||
private func isYearLiteral(number: String) -> Bool {
|
||||
if let integer = Int(number), (1500 ..< 2050).contains(integer) {
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
private func isValid(number: String, isFraction: Bool) -> (Bool, String) {
|
||||
var correctComponents = [String]()
|
||||
let clean = number.replacingOccurrences(of: "_", with: "")
|
||||
|
||||
Reference in New Issue
Block a user