diff --git a/.gitmodules b/.gitmodules index b5c5691df3..f534e1db62 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,9 +4,6 @@ [submodule "Carthage/Checkouts/SWXMLHash"] path = Carthage/Checkouts/SWXMLHash url = https://github.com/drmohundro/SWXMLHash.git -[submodule "Carthage/Checkouts/YamlSwift"] - path = Carthage/Checkouts/YamlSwift - url = https://github.com/behrang/YamlSwift.git [submodule "Carthage/Checkouts/xcconfigs"] path = Carthage/Checkouts/xcconfigs url = https://github.com/jspahrsummers/xcconfigs.git diff --git a/Cartfile b/Cartfile index 443a74702c..fc09fa9da0 100644 --- a/Cartfile +++ b/Cartfile @@ -1,2 +1,2 @@ -github "jpsim/SourceKitten" ~> 0.17.0 +github "jpsim/SourceKitten" "nn-swift3.1" github "scottrhoyt/SwiftyTextTable" ~> 0.5.0 diff --git a/Cartfile.private b/Cartfile.private index d71c030762..ff7107247c 100644 --- a/Cartfile.private +++ b/Cartfile.private @@ -1,3 +1,3 @@ github "Carthage/Commandant" "master" github "jspahrsummers/xcconfigs" "master" -github "behrang/YamlSwift" ~> 3.3 +github "jpsim/Yams" ~> 0.3 diff --git a/Cartfile.resolved b/Cartfile.resolved index 29762ea203..8b30239508 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,8 +1,7 @@ -github "antitypical/Result" "3.1.0" -github "drmohundro/SWXMLHash" "3.0.3" -github "scottrhoyt/SwiftyTextTable" "0.5.0" -github "behrang/YamlSwift" "3.3.1" -github "jpsim/Yams" "0.1.4" +github "Carthage/Commandant" "5100432bdc567db3e88c16c2e834fde0fc2c053c" +github "antitypical/Result" "3.2.1" +github "drmohundro/SWXMLHash" "3.0.4" +github "jpsim/SourceKitten" "14e51675b9414890d1e4fcd7164e91c6cef4d052" +github "jpsim/Yams" "0.3.0" github "jspahrsummers/xcconfigs" "2055f18efbe18e77408f7f43947f7ad92b2d4ff0" -github "Carthage/Commandant" "82f1b66f9b42c54fc18288643acd9b243c791537" -github "jpsim/SourceKitten" "0.17.0" +github "scottrhoyt/SwiftyTextTable" "0.5.0" diff --git a/Carthage/Checkouts/Commandant b/Carthage/Checkouts/Commandant index 82f1b66f9b..5100432bdc 160000 --- a/Carthage/Checkouts/Commandant +++ b/Carthage/Checkouts/Commandant @@ -1 +1 @@ -Subproject commit 82f1b66f9b42c54fc18288643acd9b243c791537 +Subproject commit 5100432bdc567db3e88c16c2e834fde0fc2c053c diff --git a/Carthage/Checkouts/Result b/Carthage/Checkouts/Result index 2dd1a0c7bc..2af7c14607 160000 --- a/Carthage/Checkouts/Result +++ b/Carthage/Checkouts/Result @@ -1 +1 @@ -Subproject commit 2dd1a0c7bca4cc44082f72020fe8b14491056f88 +Subproject commit 2af7c146071c8d8fb3953f19924ecebf15c88ea7 diff --git a/Carthage/Checkouts/SWXMLHash b/Carthage/Checkouts/SWXMLHash index 87f2307947..f0dda12c05 160000 --- a/Carthage/Checkouts/SWXMLHash +++ b/Carthage/Checkouts/SWXMLHash @@ -1 +1 @@ -Subproject commit 87f23079471efaf3744075fdfa21bab1035d6613 +Subproject commit f0dda12c05a9975ff1385647a75ceaa18330d3a8 diff --git a/Carthage/Checkouts/SourceKitten b/Carthage/Checkouts/SourceKitten index b12e144285..14e51675b9 160000 --- a/Carthage/Checkouts/SourceKitten +++ b/Carthage/Checkouts/SourceKitten @@ -1 +1 @@ -Subproject commit b12e1442854eb6d283a4f7e7c09f2207d1652906 +Subproject commit 14e51675b9414890d1e4fcd7164e91c6cef4d052 diff --git a/Carthage/Checkouts/YamlSwift b/Carthage/Checkouts/YamlSwift deleted file mode 160000 index e5ac6217e2..0000000000 --- a/Carthage/Checkouts/YamlSwift +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e5ac6217e21ba4a9c333ab5197f5c3d3165b8c1c diff --git a/Carthage/Checkouts/Yams b/Carthage/Checkouts/Yams index b64e0a230d..e30b18725b 160000 --- a/Carthage/Checkouts/Yams +++ b/Carthage/Checkouts/Yams @@ -1 +1 @@ -Subproject commit b64e0a230dc3c4f82cac1c8c46ae3def602131f6 +Subproject commit e30b18725bce2881eb70d77413754b65ce13707d diff --git a/Package.swift b/Package.swift index fd51d1c56a..a0dc40b98b 100644 --- a/Package.swift +++ b/Package.swift @@ -11,7 +11,7 @@ let package = Package( ], dependencies: [ .Package(url: "https://github.com/jpsim/SourceKitten.git", majorVersion: 0, minor: 17), - .Package(url: "https://github.com/behrang/YamlSwift.git", majorVersion: 3), + .Package(url: "https://github.com/jpsim/Yams.git", Version(0, 3, 0)), .Package(url: "https://github.com/scottrhoyt/SwiftyTextTable.git", majorVersion: 0, minor: 5), ] ) diff --git a/Source/SwiftLintFramework/Extensions/Yaml+SwiftLint.swift b/Source/SwiftLintFramework/Extensions/Yaml+SwiftLint.swift deleted file mode 100644 index 68002e9af3..0000000000 --- a/Source/SwiftLintFramework/Extensions/Yaml+SwiftLint.swift +++ /dev/null @@ -1,66 +0,0 @@ -// -// Yaml+SwiftLint.swift -// SwiftLint -// -// Created by Scott Hoyt on 12/28/15. -// Copyright © 2015 Realm. All rights reserved. -// - -import Foundation -import Yaml - -extension Yaml { - var flatDictionary: [Swift.String: Any]? { - if let dict = dictionary { - var newDict: [Swift.String: Any] = [:] - for (key, value) in dict { - newDict[key.stringValue] = value.flatValue - } - return newDict - } else if count == 0 || self == .null { // swiftlint:disable:this empty_count - return [:] - } - - return nil - } - - var flatArray: [Any]? { return array?.map { $0.flatValue } } - - var flatValue: Any { - switch self { - case .bool(let myBool): - return myBool as Any - case .int(let myInt): - return myInt as Any - case .double(let myDouble): - return myDouble as Any - case .string(let myString): - return myString as Any - case .array: - return flatArray! as Any // This is valid because .Array will always flatten - case .dictionary: - return flatDictionary! as Any // This is valid because .Dictionary will always flatten - case .null: - return NSNull() - } - } - - var stringValue: Swift.String { - switch self { - case .bool(let myBool): - return myBool.description - case .int(let myInt): - return myInt.description - case .double(let myDouble): - return myDouble.description - case .string(let myString): - return myString - case .array(let myArray): - return myArray.description - case .dictionary(let myDictionary): - return myDictionary.description - case .null: - return "Null" - } - } -} diff --git a/Source/SwiftLintFramework/Models/YamlParser.swift b/Source/SwiftLintFramework/Models/YamlParser.swift index 46d1573d17..bc2c168633 100644 --- a/Source/SwiftLintFramework/Models/YamlParser.swift +++ b/Source/SwiftLintFramework/Models/YamlParser.swift @@ -6,7 +6,7 @@ // Copyright © 2016 Realm. All rights reserved. // -import Yaml +import Yams // MARK: - YamlParsingError @@ -31,14 +31,14 @@ internal func == (lhs: YamlParserError, rhs: YamlParserError) -> Bool { public struct YamlParser { public static func parse(_ yaml: String) throws -> [String: Any] { do { - if let dict = try Yaml.load(yaml).flatDictionary { - return dict + if let obj = try Yams.load(yaml: yaml) { + if let dic = obj as? [String: Any] { + return dic + } } - throw YamlParserError.yamlFlattening - } catch Yaml.ResultError.message(let message) { - throw YamlParserError.yamlParsing(message ?? "Unknown YAML Error") + return [:] } catch { - throw error + throw YamlParserError.yamlParsing("\(error)") } } } diff --git a/SwiftLint.xcodeproj/project.pbxproj b/SwiftLint.xcodeproj/project.pbxproj index c2ac820319..99a44a6117 100644 --- a/SwiftLint.xcodeproj/project.pbxproj +++ b/SwiftLint.xcodeproj/project.pbxproj @@ -27,7 +27,6 @@ 37B3FA8B1DFD45A700AD30D2 /* Dictionary+SwiftLint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37B3FA8A1DFD45A700AD30D2 /* Dictionary+SwiftLint.swift */; }; 3B034B6E1E0BE549005D49A9 /* LineLengthConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B034B6C1E0BE544005D49A9 /* LineLengthConfiguration.swift */; }; 3B0B14541C505D6300BE82F7 /* SeverityConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B0B14531C505D6300BE82F7 /* SeverityConfiguration.swift */; }; - 3B1150CA1C31FC3F00D83B1E /* Yaml+SwiftLint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B1150C91C31FC3F00D83B1E /* Yaml+SwiftLint.swift */; }; 3B12C9C11C3209CB000B423F /* test.yml in Resources */ = {isa = PBXBuildFile; fileRef = 3B12C9BF1C3209AC000B423F /* test.yml */; }; 3B12C9C31C320A53000B423F /* Yaml+SwiftLintTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B12C9C21C320A53000B423F /* Yaml+SwiftLintTests.swift */; }; 3B12C9C51C322032000B423F /* MasterRuleList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B12C9C41C322032000B423F /* MasterRuleList.swift */; }; @@ -71,7 +70,6 @@ 6CCFCF2D1CFEF731003239EB /* SourceKittenFramework.framework in Embed Frameworks into SwiftLintFramework.framework */ = {isa = PBXBuildFile; fileRef = E876BFBD1B07828500114ED5 /* SourceKittenFramework.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6CCFCF2E1CFEF73A003239EB /* SWXMLHash.framework in Embed Frameworks into SwiftLintFramework.framework */ = {isa = PBXBuildFile; fileRef = E8C0DFCC1AD349DB007EE3D4 /* SWXMLHash.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6CCFCF2F1CFEF73E003239EB /* SwiftyTextTable.framework in Embed Frameworks into SwiftLintFramework.framework */ = {isa = PBXBuildFile; fileRef = 3BBF2F9C1C640A0F006CD775 /* SwiftyTextTable.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 6CCFCF301CFEF742003239EB /* Yaml.framework in Embed Frameworks into SwiftLintFramework.framework */ = {isa = PBXBuildFile; fileRef = E89376AC1B8A701E0025708E /* Yaml.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 7250948A1D0859260039B353 /* StatementPositionConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 725094881D0855760039B353 /* StatementPositionConfiguration.swift */; }; 78F032461D7C877E00BE709A /* OverriddenSuperCallRule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78F032441D7C877800BE709A /* OverriddenSuperCallRule.swift */; }; 78F032481D7D614300BE709A /* OverridenSuperCallConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78F032471D7D614300BE709A /* OverridenSuperCallConfiguration.swift */; }; @@ -216,7 +214,6 @@ E88DEA771B098D0C00A66CB0 /* Rule.swift in Sources */ = {isa = PBXBuildFile; fileRef = E88DEA761B098D0C00A66CB0 /* Rule.swift */; }; E88DEA791B098D4400A66CB0 /* RuleParameter.swift in Sources */ = {isa = PBXBuildFile; fileRef = E88DEA781B098D4400A66CB0 /* RuleParameter.swift */; }; E88DEA8C1B0999A000A66CB0 /* ASTRule.swift in Sources */ = {isa = PBXBuildFile; fileRef = E88DEA8B1B0999A000A66CB0 /* ASTRule.swift */; }; - E89376AD1B8A701E0025708E /* Yaml.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E89376AC1B8A701E0025708E /* Yaml.framework */; }; E8B067811C13E49600E9E13F /* Configuration+CommandLine.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8B067801C13E49600E9E13F /* Configuration+CommandLine.swift */; }; E8B67C3E1C095E6300FDED8E /* Correction.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8B67C3D1C095E6300FDED8E /* Correction.swift */; }; E8BE1FCC1E07687400F781C7 /* Yams.framework in Embed Frameworks into SwiftLintFramework.framework */ = {isa = PBXBuildFile; fileRef = E8BE1FCB1E07687400F781C7 /* Yams.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -250,7 +247,6 @@ dstPath = SwiftLintFramework.framework/Versions/Current/Frameworks; dstSubfolderSpec = 10; files = ( - 6CCFCF301CFEF742003239EB /* Yaml.framework in Embed Frameworks into SwiftLintFramework.framework */, 6CCFCF2A1CFEF729003239EB /* Commandant.framework in Embed Frameworks into SwiftLintFramework.framework */, 6CCFCF2C1CFEF72D003239EB /* Result.framework in Embed Frameworks into SwiftLintFramework.framework */, 6CCFCF2D1CFEF731003239EB /* SourceKittenFramework.framework in Embed Frameworks into SwiftLintFramework.framework */, @@ -295,7 +291,6 @@ 37B3FA8A1DFD45A700AD30D2 /* Dictionary+SwiftLint.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Dictionary+SwiftLint.swift"; sourceTree = ""; }; 3B034B6C1E0BE544005D49A9 /* LineLengthConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LineLengthConfiguration.swift; sourceTree = ""; }; 3B0B14531C505D6300BE82F7 /* SeverityConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SeverityConfiguration.swift; sourceTree = ""; }; - 3B1150C91C31FC3F00D83B1E /* Yaml+SwiftLint.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Yaml+SwiftLint.swift"; sourceTree = ""; }; 3B12C9BF1C3209AC000B423F /* test.yml */ = {isa = PBXFileReference; lastKnownFileType = text; path = test.yml; sourceTree = ""; }; 3B12C9C21C320A53000B423F /* Yaml+SwiftLintTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Yaml+SwiftLintTests.swift"; sourceTree = ""; }; 3B12C9C41C322032000B423F /* MasterRuleList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MasterRuleList.swift; sourceTree = ""; }; @@ -517,7 +512,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E89376AD1B8A701E0025708E /* Yaml.framework in Frameworks */, E876BFBE1B07828500114ED5 /* SourceKittenFramework.framework in Frameworks */, E8C0DFCD1AD349DB007EE3D4 /* SWXMLHash.framework in Frameworks */, 3BBF2F9D1C640A0F006CD775 /* SwiftyTextTable.framework in Frameworks */, @@ -970,7 +964,6 @@ D47079AA1DFDCF7A00027086 /* SwiftExpressionKind.swift */, E87E4A081BFB9CAE00FCFE46 /* SyntaxKind+SwiftLint.swift */, 6CC4259A1C77046200AEA885 /* SyntaxMap+SwiftLint.swift */, - 3B1150C91C31FC3F00D83B1E /* Yaml+SwiftLint.swift */, ); path = Extensions; sourceTree = ""; @@ -1317,7 +1310,6 @@ E88DEA6B1B0983FE00A66CB0 /* StyleViolation.swift in Sources */, 3BB47D831C514E8100AE6A10 /* RegexConfiguration.swift in Sources */, D4C889711E385B7B00BAE88D /* RedundantDiscardableLetRule.swift in Sources */, - 3B1150CA1C31FC3F00D83B1E /* Yaml+SwiftLint.swift in Sources */, 4A9A3A3A1DC1D75F00DF5183 /* HTMLReporter.swift in Sources */, D40F83881DE9179200524C62 /* TrailingCommaConfiguration.swift in Sources */, 3B5B9FE11C444DA20009AD27 /* Array+SwiftLint.swift in Sources */, diff --git a/SwiftLint.xcworkspace/contents.xcworkspacedata b/SwiftLint.xcworkspace/contents.xcworkspacedata index c5afadfda7..28e19ac289 100644 --- a/SwiftLint.xcworkspace/contents.xcworkspacedata +++ b/SwiftLint.xcworkspace/contents.xcworkspacedata @@ -19,9 +19,6 @@ - - diff --git a/Tests/SwiftLintFrameworkTests/Yaml+SwiftLintTests.swift b/Tests/SwiftLintFrameworkTests/Yaml+SwiftLintTests.swift index f808e43384..fcbfecb691 100644 --- a/Tests/SwiftLintFrameworkTests/Yaml+SwiftLintTests.swift +++ b/Tests/SwiftLintFrameworkTests/Yaml+SwiftLintTests.swift @@ -9,14 +9,16 @@ import Foundation @testable import SwiftLintFramework import XCTest -import Yaml +import Yams class YamlSwiftLintTests: XCTestCase { func testFlattenYaml() { do { - let yaml = try Yaml.load(getTestYaml()) - let yamlDict = yaml.flatDictionary! + guard let yamlDict = try Yams.load(yaml: getTestYaml()) as? [String: Any] else { + XCTFail() + return + } let dict1 = (yamlDict["dictionary1"] as? [Swift.String: Any])! let dict2 = (yamlDict["dictionary2"] as? [Swift.String: Any])! diff --git a/Tests/SwiftLintFrameworkTests/YamlParserTests.swift b/Tests/SwiftLintFrameworkTests/YamlParserTests.swift index 0f9f809ace..90445a65c2 100644 --- a/Tests/SwiftLintFrameworkTests/YamlParserTests.swift +++ b/Tests/SwiftLintFrameworkTests/YamlParserTests.swift @@ -22,7 +22,7 @@ class YamlParserTests: XCTestCase { } func testParseInvalidStringThrows() { - checkError(YamlParserError.yamlParsing("expected end, near \"a\"")) { + checkError(YamlParserError.yamlParsing("1:0: error: parser: did not find expected :\na\n^")) { _ = try YamlParser.parse("|\na") } }