Skip to content

Commit

Permalink
Add ObjectLiteralConfiguration with color/image options
Browse files Browse the repository at this point in the history
This fixes realm#1587 by implementing the discussed option config.
  • Loading branch information
Jeehut committed Jun 15, 2017
1 parent 95f2cf6 commit ad03a2f
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 2 deletions.
4 changes: 2 additions & 2 deletions Source/SwiftLintFramework/Rules/ObjectLiteralRule.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import SourceKittenFramework

public struct ObjectLiteralRule: ASTRule, ConfigurationProviderRule, OptInRule {

public var configuration = SeverityConfiguration(.warning)
public var configuration = ObjectLiteralConfiguration()

public init() {}

Expand Down Expand Up @@ -52,7 +52,7 @@ public struct ObjectLiteralRule: ASTRule, ConfigurationProviderRule, OptInRule {

return [
StyleViolation(ruleDescription: type(of: self).description,
severity: configuration.severity,
severity: configuration.severityConfiguration.severity,
location: Location(file: file, byteOffset: offset))
]
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
//
// ObjectLiteralConfiguration.swift
// SwiftLint
//
// Created by Cihat Gündüz on 06/03/17.
// Copyright © 2017 Realm. All rights reserved.
//

import Foundation

public struct ObjectLiteralConfiguration: RuleConfiguration, Equatable {
private(set) var severityConfiguration = SeverityConfiguration(.warning)
private(set) var imageLiteral = true
private(set) var colorLiteral = true

public var consoleDescription: String {
return severityConfiguration.consoleDescription
+ ", image_literal: \(imageLiteral)"
+ ", color_literal: \(colorLiteral)"
}

public mutating func apply(configuration: Any) throws {
guard let configuration = configuration as? [String: Any] else {
throw ConfigurationError.unknownConfiguration
}

imageLiteral = configuration["image_literal"] as? Bool ?? true
colorLiteral = configuration["color_literal"] as? Bool ?? true

if let severityString = configuration["severity"] as? String {
try severityConfiguration.apply(configuration: severityString)
}
}

public static func == (lhs: ObjectLiteralConfiguration,
rhs: ObjectLiteralConfiguration) -> Bool {
return lhs.severityConfiguration == rhs.severityConfiguration &&
lhs.imageLiteral == rhs.imageLiteral &&
lhs.colorLiteral == rhs.colorLiteral
}
}
4 changes: 4 additions & 0 deletions SwiftLint.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@
85DA81321D6B471000951BC4 /* MarkRule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 856651A61D6B395F005E6B29 /* MarkRule.swift */; };
92CCB2D71E1EEFA300C8E5A3 /* UnusedOptionalBindingRule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92CCB2D61E1EEFA300C8E5A3 /* UnusedOptionalBindingRule.swift */; };
93E0C3CE1D67BD7F007FA25D /* ConditionalReturnsOnNewlineRule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93E0C3CD1D67BD7F007FA25D /* ConditionalReturnsOnNewlineRule.swift */; };
A1A6F3F21EE319ED00A9F9E2 /* ObjectLiteralConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1A6F3F11EE319ED00A9F9E2 /* ObjectLiteralConfiguration.swift */; };
B2902A0C1D66815600BFCCF7 /* PrivateUnitTestRule.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2902A0B1D66815600BFCCF7 /* PrivateUnitTestRule.swift */; };
B2902A0E1D6681F700BFCCF7 /* PrivateUnitTestConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2902A0D1D6681F700BFCCF7 /* PrivateUnitTestConfiguration.swift */; };
B3935371E92E0CF3F7668303 /* CannedJunitReporterOutput.xml in Resources */ = {isa = PBXBuildFile; fileRef = B39359A325FE84B7EDD1C455 /* CannedJunitReporterOutput.xml */; };
Expand Down Expand Up @@ -367,6 +368,7 @@
856651A61D6B395F005E6B29 /* MarkRule.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MarkRule.swift; sourceTree = "<group>"; };
92CCB2D61E1EEFA300C8E5A3 /* UnusedOptionalBindingRule.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnusedOptionalBindingRule.swift; sourceTree = "<group>"; };
93E0C3CD1D67BD7F007FA25D /* ConditionalReturnsOnNewlineRule.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConditionalReturnsOnNewlineRule.swift; sourceTree = "<group>"; };
A1A6F3F11EE319ED00A9F9E2 /* ObjectLiteralConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObjectLiteralConfiguration.swift; sourceTree = "<group>"; };
B2902A0B1D66815600BFCCF7 /* PrivateUnitTestRule.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PrivateUnitTestRule.swift; sourceTree = "<group>"; };
B2902A0D1D6681F700BFCCF7 /* PrivateUnitTestConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PrivateUnitTestConfiguration.swift; sourceTree = "<group>"; };
B3935001033261E5A70CE101 /* CannedEmojiReporterOutput.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CannedEmojiReporterOutput.txt; sourceTree = "<group>"; };
Expand Down Expand Up @@ -605,6 +607,7 @@
3BCC04D01C4F56D3006073C3 /* NameConfiguration.swift */,
D93DA3CF1E699E4E00809827 /* NestingConfiguration.swift */,
D4DA1DFD1E1A10DB0037413D /* NumberSeparatorConfiguration.swift */,
A1A6F3F11EE319ED00A9F9E2 /* ObjectLiteralConfiguration.swift */,
78F032471D7D614300BE709A /* OverridenSuperCallConfiguration.swift */,
DAD3BE491D6ECD9500660239 /* PrivateOutletRuleConfiguration.swift */,
B2902A0D1D6681F700BFCCF7 /* PrivateUnitTestConfiguration.swift */,
Expand Down Expand Up @@ -1406,6 +1409,7 @@
C3DE5DAC1E7DF9CA00761483 /* FatalErrorMessageRule.swift in Sources */,
4DCB8E7F1CBE494E0070FCF0 /* RegexHelpers.swift in Sources */,
E86396C21BADAAE5002C9E88 /* Reporter.swift in Sources */,
A1A6F3F21EE319ED00A9F9E2 /* ObjectLiteralConfiguration.swift in Sources */,
D4B0228E1E0CC608007E5297 /* ClassDelegateProtocolRule.swift in Sources */,
E881985F1BEA987C00333A11 /* TypeNameRule.swift in Sources */,
D40AD08A1E032F9700F48C30 /* UnusedClosureParameterRule.swift in Sources */,
Expand Down

0 comments on commit ad03a2f

Please sign in to comment.