Files
SwiftLint/Source/SwiftLintFramework/Models/SwiftLintFile.swift
T
2019-11-07 15:19:17 +02:00

58 lines
1.2 KiB
Swift

import Foundation
import SourceKittenFramework
public final class SwiftLintFile {
private static var id = 0
private static var lock = NSLock()
private static func nextId () -> Int {
lock.lock()
defer { lock.unlock() }
id += 1
return id
}
let file: File
let id: Int
public init(file: File) {
self.file = file
self.id = SwiftLintFile.nextId()
}
public convenience init?(path: String) {
guard let file = File(path: path) else { return nil }
self.init(file: file)
}
public convenience init(pathDeferringReading path: String) {
self.init(file: File(pathDeferringReading: path))
}
public convenience init(contents: String) {
self.init(file: File(contents: contents))
}
public var path: String? {
return file.path
}
public var contents: String {
return file.contents
}
public var lines: [Line] {
return file.lines
}
}
extension SwiftLintFile: Hashable {
public static func == (lhs: SwiftLintFile, rhs: SwiftLintFile) -> Bool {
return lhs.id == rhs.id
}
public func hash(into hasher: inout Hasher) {
hasher.combine(id)
}
}