mirror of
https://github.com/realm/SwiftLint.git
synced 2026-06-06 20:18:40 +00:00
53 lines
1.8 KiB
Swift
53 lines
1.8 KiB
Swift
//
|
|
// AttributesConfiguration.swift
|
|
// SwiftLint
|
|
//
|
|
// Created by Marcelo Fabri on 11/26/16.
|
|
// Copyright © 2016 Realm. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
public struct AttributesConfiguration: RuleConfiguration, Equatable {
|
|
private(set) var severityConfiguration = SeverityConfiguration(.warning)
|
|
private(set) var alwaysOnSameLine = Set<String>()
|
|
private(set) var alwaysOnNewLine = Set<String>()
|
|
|
|
public var consoleDescription: String {
|
|
return severityConfiguration.consoleDescription +
|
|
", always_on_same_line: \(alwaysOnSameLine)" +
|
|
", always_on_line_above: \(alwaysOnNewLine)"
|
|
}
|
|
|
|
public init(alwaysOnSameLine: [String] = ["@IBAction", "@NSManaged"],
|
|
alwaysInNewLine: [String] = []) {
|
|
self.alwaysOnSameLine = Set(alwaysOnSameLine)
|
|
self.alwaysOnNewLine = Set(alwaysOnNewLine)
|
|
}
|
|
|
|
public mutating func apply(configuration: Any) throws {
|
|
guard let configuration = configuration as? [String: Any] else {
|
|
throw ConfigurationError.unknownConfiguration
|
|
}
|
|
|
|
if let alwaysOnSameLine = configuration["always_on_same_line"] as? [String] {
|
|
self.alwaysOnSameLine = Set(alwaysOnSameLine)
|
|
}
|
|
|
|
if let alwaysOnNewLine = configuration["always_on_line_above"] as? [String] {
|
|
self.alwaysOnNewLine = Set(alwaysOnNewLine)
|
|
}
|
|
|
|
if let severityString = configuration["severity"] as? String {
|
|
try severityConfiguration.apply(configuration: severityString)
|
|
}
|
|
}
|
|
}
|
|
|
|
public func == (lhs: AttributesConfiguration,
|
|
rhs: AttributesConfiguration) -> Bool {
|
|
return lhs.severityConfiguration == rhs.severityConfiguration &&
|
|
lhs.alwaysOnSameLine == rhs.alwaysOnSameLine &&
|
|
rhs.alwaysOnNewLine == rhs.alwaysOnNewLine
|
|
}
|