Files
SwiftLint/Source/SwiftLintFramework/Extensions/SyntaxMap+SwiftLint.swift
T
JP Simard f08c3e4239 Use firstIndex(where:) instead of index(where:) (#2600)
to silence a Swift 5 warning. This is compatible with Swift 4.2.
2019-01-27 20:19:16 -08:00

25 lines
837 B
Swift

import Foundation
import SourceKittenFramework
extension SyntaxMap {
/// Returns array of SyntaxTokens intersecting with byte range
///
/// - Parameter byteRange: byte based NSRange
internal func tokens(inByteRange byteRange: NSRange) -> [SyntaxToken] {
func intersect(_ token: SyntaxToken) -> Bool {
return NSRange(location: token.offset, length: token.length)
.intersects(byteRange)
}
guard let startIndex = tokens.firstIndex(where: intersect) else {
return []
}
let tokensBeginningIntersect = tokens.lazy.suffix(from: startIndex)
return Array(tokensBeginningIntersect.filter(intersect))
}
internal func kinds(inByteRange byteRange: NSRange) -> [SyntaxKind] {
return tokens(inByteRange: byteRange).kinds
}
}