[number_separator] Allow year integer literals to be written without separator

This commit is contained in:
Cihat Gündüz
2019-02-12 15:00:14 +01:00
parent efee4ed582
commit 85a6a77791
@@ -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: "")