diff --git a/Binary/Sources/Deli/Runner/Parser.swift b/Binary/Sources/Deli/Runner/Parser.swift index 26855b2..92b5825 100644 --- a/Binary/Sources/Deli/Runner/Parser.swift +++ b/Binary/Sources/Deli/Runner/Parser.swift @@ -4,6 +4,7 @@ // import Foundation +import Regex import SourceKittenFramework final class Parser: Runnable { @@ -14,14 +15,15 @@ final class Parser: Runnable { static let allowKinds = [ SwiftDeclarationKind.class.rawValue, SwiftDeclarationKind.struct.rawValue, - SwiftDeclarationKind.protocol.rawValue, - SwiftDeclarationKind.typealias.rawValue + SwiftDeclarationKind.protocol.rawValue ] static let allowAccessLevels = [ Structure.AccessLevel.open, Structure.AccessLevel.public, Structure.AccessLevel.internal ] + + static let typealiasRegex = "typealias[\\s]+([^\\s=]+)[\\s]*=[\\s]*([^\\n]+)".r! } // MARK: - Property @@ -31,9 +33,32 @@ final class Parser: Runnable { // MARK: - Private private var inheritanceMap = [String: InheritanceInfo]() + + private func parseTypealias(structure: Structure, content: String) -> String? { + guard let data = content.utf8[Int(structure.offset).. [Results] { - guard let name = structure.name.map({ prefix + $0 }) else { return [] } + private func parse( + structure: Structure, + content: String, + typePrefix: String = "", + typealiasMap: [String: String] = [:] + ) throws -> [Results] { + guard let name = structure.name.map({ typePrefix + $0 }) else { return [] } /// Compare allowed keywords guard Constant.allowKinds.contains(structure.kind) else { return [] } @@ -41,10 +66,29 @@ final class Parser: Runnable { /// Compares allowed AccessLevels guard Constant.allowAccessLevels.contains(structure.accessLevel) else { return [] } + /// Saved typealias + var typealiasMap = typealiasMap + structure.substructures + .filter { $0.kind == SwiftDeclarationKind.typealias.rawValue } + .forEach { structure in + guard let typeName = structure.name else { return } + guard let typeResult = parseTypealias(structure: structure, content: content) else { return } + + typealiasMap[typeName] = typeResult + typealiasMap["\(name).\(typeName)"] = typeResult + } + /// Find nested type let results = try structure.substructures - .flatMap { try parse(structure: $0, content: content, prefix: "\(name).") } - + .flatMap { + try parse( + structure: $0, + content: content, + typePrefix: "\(name).", + typealiasMap: typealiasMap + ) + } + /// Save inheritance information inheritanceMap[name] = InheritanceInfo( name: name, @@ -54,18 +98,32 @@ final class Parser: Runnable { ) /// Parsing - return try moduleList + let parseResults = try moduleList .flatMap { parsable -> [Results] in let dependencies = try parsable.dependency - .flatMap { try $0.parse(by: structure, fileContent: content) } + .flatMap { + try $0.parse( + by: structure, + fileContent: content, + typePrefix: typePrefix, + typealiasMap: typealiasMap + ) + } return try parsable - .parse(by: structure, fileContent: content) + .parse( + by: structure, + fileContent: content, + typePrefix: typePrefix, + typealiasMap: typealiasMap + ) .map { result in result.dependencies.append(contentsOf: dependencies) return result } } + results + + return parseResults } private func parse(path: String) throws -> [Results] { diff --git a/Binary/Sources/Deli/Runner/Parser/AutowiredFactoryParser.swift b/Binary/Sources/Deli/Runner/Parser/AutowiredFactoryParser.swift index 1fa8d99..a1dd478 100644 --- a/Binary/Sources/Deli/Runner/Parser/AutowiredFactoryParser.swift +++ b/Binary/Sources/Deli/Runner/Parser/AutowiredFactoryParser.swift @@ -58,8 +58,13 @@ final class AutowiredFactoryParser: Parsable { // MARK: - Public - func parse(by source: Structure, fileContent: String) throws -> [Results] { - guard let name = source.name else { + func parse( + by source: Structure, + fileContent: String, + typePrefix: String, + typealiasMap: [String: String] + ) throws -> [Results] { + guard let name = source.name.map({ typePrefix + $0 }) else { Logger.log(.assert("Unknown structure name.")) return [] } @@ -111,7 +116,7 @@ final class AutowiredFactoryParser: Parsable { return Dependency( parent: name, target: constructor, - name: arrayType, + name: typealiasMap[arrayType] ?? arrayType, type: .array, qualifier: qualifier, qualifierBy: qualifierBy @@ -120,7 +125,7 @@ final class AutowiredFactoryParser: Parsable { return Dependency( parent: name, target: constructor, - name: dependencyName, + name: typealiasMap[dependencyName] ?? dependencyName, qualifier: qualifier, qualifierBy: qualifierBy ) diff --git a/Binary/Sources/Deli/Runner/Parser/AutowiredParser.swift b/Binary/Sources/Deli/Runner/Parser/AutowiredParser.swift index e7c33a2..e4f087f 100644 --- a/Binary/Sources/Deli/Runner/Parser/AutowiredParser.swift +++ b/Binary/Sources/Deli/Runner/Parser/AutowiredParser.swift @@ -49,8 +49,13 @@ final class AutowiredParser: Parsable { // MARK: - Public - func parse(by source: Structure, fileContent: String) throws -> [Results] { - guard let name = source.name else { + func parse( + by source: Structure, + fileContent: String, + typePrefix: String, + typealiasMap: [String: String] + ) throws -> [Results] { + guard let name = source.name.map({ typePrefix + $0 }) else { Logger.log(.assert("Unknown structure name.")) return [] } @@ -100,7 +105,7 @@ final class AutowiredParser: Parsable { return Dependency( parent: name, target: constructor, - name: arrayType, + name: typealiasMap[arrayType] ?? arrayType, type: .array, qualifier: qualifier, qualifierBy: qualifierBy @@ -109,7 +114,7 @@ final class AutowiredParser: Parsable { return Dependency( parent: name, target: constructor, - name: dependencyName, + name: typealiasMap[dependencyName] ?? dependencyName, qualifier: qualifier, qualifierBy: qualifierBy ) diff --git a/Binary/Sources/Deli/Runner/Parser/ComponentParser.swift b/Binary/Sources/Deli/Runner/Parser/ComponentParser.swift index 3ce31ad..ca52428 100644 --- a/Binary/Sources/Deli/Runner/Parser/ComponentParser.swift +++ b/Binary/Sources/Deli/Runner/Parser/ComponentParser.swift @@ -15,8 +15,13 @@ final class ComponentParser: Parsable { // MARK: - Public - func parse(by source: Structure, fileContent: String) throws -> [Results] { - guard let name = source.name else { return [] } + func parse( + by source: Structure, + fileContent: String, + typePrefix: String, + typealiasMap: [String: String] + ) throws -> [Results] { + guard let name = source.name.map({ typePrefix + $0 }) else { return [] } guard source.inheritedTypes.contains(Constant.inheritanceName) else { return [] } let scope = try parseScope(source, fileContent: fileContent) diff --git a/Binary/Sources/Deli/Runner/Parser/ConfigPropertyParser.swift b/Binary/Sources/Deli/Runner/Parser/ConfigPropertyParser.swift index d15dfc3..f165238 100644 --- a/Binary/Sources/Deli/Runner/Parser/ConfigPropertyParser.swift +++ b/Binary/Sources/Deli/Runner/Parser/ConfigPropertyParser.swift @@ -19,7 +19,11 @@ final class ConfigPropertyParser: Parsable { // MARK: - Private - private func convert(_ source: Structure, fileContent: String) throws -> ConfigPropertyResult { + private func convert( + _ source: Structure, + fileContent: String, + typealiasMap: [String: String] + ) throws -> ConfigPropertyResult { guard let name = source.name else { throw ParserError.unknown } @@ -75,13 +79,24 @@ final class ConfigPropertyParser: Parsable { // MARK: - Public - func parse(by source: Structure, fileContent: String) throws -> [Results] { + func parse( + by source: Structure, + fileContent: String, + typePrefix: String, + typealiasMap: [String: String] + ) throws -> [Results] { guard source.name != nil else { Logger.log(.assert("Unknown structure name.")) return [] } guard source.inheritedTypes.contains(Constant.inheritanceName) else { return [] } - return [try convert(source, fileContent: fileContent)] + return [ + try convert( + source, + fileContent: fileContent, + typealiasMap: typealiasMap + ) + ] } } diff --git a/Binary/Sources/Deli/Runner/Parser/ConfigurationParser.swift b/Binary/Sources/Deli/Runner/Parser/ConfigurationParser.swift index bf96517..97c1e69 100644 --- a/Binary/Sources/Deli/Runner/Parser/ConfigurationParser.swift +++ b/Binary/Sources/Deli/Runner/Parser/ConfigurationParser.swift @@ -37,7 +37,13 @@ final class ConfigurationParser: Parsable { private let injectParser = InjectParser() - private func convert(_ source: Structure, parent: Structure, fileContent: String) throws -> ConfigFunctionResult { + private func convert( + _ source: Structure, + parent: Structure, + fileContent: String, + typePrefix: String, + typealiasMap: [String: String] + ) throws -> ConfigFunctionResult { guard let name = parent.name else { throw ParserError.unknown } @@ -88,7 +94,7 @@ final class ConfigurationParser: Parsable { return Dependency( parent: name, target: source, - name: dependencyName + name: typealiasMap[dependencyName] ?? dependencyName ) } @@ -124,7 +130,13 @@ final class ConfigurationParser: Parsable { .findAll(in: fileContent) .compactMap { $0.group(at: 1) } - let injectResults = try injectParser.parse(by: source, fileContent: fileContent, isInheritanceCheck: false) + let injectResults = try injectParser.parse( + by: source, + fileContent: fileContent, + isInheritanceCheck: false, + typePrefix: typePrefix, + typealiasMap: typealiasMap + ) /// Result return ConfigFunctionResult( @@ -147,8 +159,13 @@ final class ConfigurationParser: Parsable { // MARK: - Public - func parse(by source: Structure, fileContent: String) throws -> [Results] { - guard let name = source.name else { + func parse( + by source: Structure, + fileContent: String, + typePrefix: String, + typealiasMap: [String: String] + ) throws -> [Results] { + guard let name = source.name.map({ typePrefix + $0 }) else { Logger.log(.assert("Unknown structure name.")) return [] } @@ -156,7 +173,15 @@ final class ConfigurationParser: Parsable { return try source.substructures .filter { validFunction($0) } - .map { try convert($0, parent: source, fileContent: fileContent) } + + .map { + try convert( + $0, + parent: source, + fileContent: fileContent, + typePrefix: typePrefix, + typealiasMap: typealiasMap + ) + } + [ ConfigurationResult( name, diff --git a/Binary/Sources/Deli/Runner/Parser/InjectParser.swift b/Binary/Sources/Deli/Runner/Parser/InjectParser.swift index 44bad0a..069a1f4 100644 --- a/Binary/Sources/Deli/Runner/Parser/InjectParser.swift +++ b/Binary/Sources/Deli/Runner/Parser/InjectParser.swift @@ -34,7 +34,12 @@ final class InjectParser: Parsable { // MARK: - Private - private func found(_ source: Structure, root: Structure, fileContent: String) throws -> Dependency? { + private func found( + _ source: Structure, + root: Structure, + fileContent: String, + typealiasMap: [String: String] + ) throws -> Dependency? { guard let rootName = root.name else { return nil } guard let name = source.name else { return nil } guard name == Constant.functionName || name.hasSuffix(".\(Constant.functionName)") else { return nil } @@ -91,7 +96,7 @@ final class InjectParser: Parsable { return Dependency( parent: rootName, target: source, - name: arrayType, + name: typealiasMap[arrayType] ?? arrayType, type: .array, rule: isPayload ? .payload : .default, qualifier: qualifier, @@ -101,22 +106,30 @@ final class InjectParser: Parsable { return Dependency( parent: rootName, target: source, - name: typeName, + name: typealiasMap[typeName] ?? typeName, rule: isPayload ? .payload : .default, qualifier: qualifier, qualifierBy: qualifierBy ) } - private func searchInject(_ source: Structure, fileContent: String) throws -> [Dependency] { + private func searchInject( + _ source: Structure, + fileContent: String, + typealiasMap: [String: String] + ) throws -> [Dependency] { var dependencyList = [Dependency]() var queue = source.substructures while let item = queue.popLast() { queue.append(contentsOf: item.substructures) - if let dependency = try found(item, root: source, fileContent: fileContent) { - dependencyList.append(dependency) - } + + try found( + item, + root: source, + fileContent: fileContent, + typealiasMap: typealiasMap + ).map { dependencyList.append($0) } } return dependencyList @@ -124,11 +137,28 @@ final class InjectParser: Parsable { // MARK: - Public - func parse(by source: Structure, fileContent: String) throws -> [Results] { - return try parse(by: source, fileContent: fileContent, isInheritanceCheck: true) + func parse( + by source: Structure, + fileContent: String, + typePrefix: String, + typealiasMap: [String: String] + ) throws -> [Results] { + return try parse( + by: source, + fileContent: fileContent, + isInheritanceCheck: true, + typePrefix: typePrefix, + typealiasMap: typealiasMap + ) } - func parse(by source: Structure, fileContent: String, isInheritanceCheck: Bool) throws -> [Results] { - guard let name = source.name else { + func parse( + by source: Structure, + fileContent: String, + isInheritanceCheck: Bool, + typePrefix: String, + typealiasMap: [String: String] + ) throws -> [Results] { + guard let name = source.name.map({ typePrefix + $0 }) else { Logger.log(.assert("Unknown structure name.")) return [] } @@ -136,7 +166,11 @@ final class InjectParser: Parsable { guard source.inheritedTypes.contains(where: { Constant.inheritanceName.contains($0) }) else { return [] } } - let dependencyList = try searchInject(source, fileContent: fileContent) + let dependencyList = try searchInject( + source, + fileContent: fileContent, + typealiasMap: typealiasMap + ) return [ InjectProtocolResult( name, diff --git a/Binary/Sources/Deli/Runner/Parser/InjectPropertyParser.swift b/Binary/Sources/Deli/Runner/Parser/InjectPropertyParser.swift index 6e471a2..d402770 100644 --- a/Binary/Sources/Deli/Runner/Parser/InjectPropertyParser.swift +++ b/Binary/Sources/Deli/Runner/Parser/InjectPropertyParser.swift @@ -20,7 +20,11 @@ final class InjectPropertyParser: Parsable { // MARK: - Private - private func found(_ source: Structure, root: Structure, fileContent: String) throws -> String? { + private func found( + _ source: Structure, + root: Structure, + fileContent: String + ) throws -> String? { guard let name = source.name else { return nil } guard name == Constant.functionName || name.hasSuffix(".\(Constant.functionName)") else { return nil } guard source.kind == Constant.functionCallKey else { return nil } @@ -36,7 +40,10 @@ final class InjectPropertyParser: Parsable { return path } - private func searchInjectProperty(_ source: Structure, fileContent: String) throws -> [String] { + private func searchInjectProperty( + _ source: Structure, + fileContent: String + ) throws -> [String] { var pathList = [String]() var queue = source.substructures @@ -52,8 +59,13 @@ final class InjectPropertyParser: Parsable { // MARK: - Public - func parse(by source: Structure, fileContent: String) throws -> [Results] { - guard let name = source.name else { + func parse( + by source: Structure, + fileContent: String, + typePrefix: String, + typealiasMap: [String: String] + ) throws -> [Results] { + guard let name = source.name.map({ typePrefix + $0 }) else { Logger.log(.assert("Unknown structure name.")) return [] } diff --git a/Binary/Sources/Deli/Runner/Parser/LazyAutowiredFactoryParser.swift b/Binary/Sources/Deli/Runner/Parser/LazyAutowiredFactoryParser.swift index c73addf..d7d255a 100644 --- a/Binary/Sources/Deli/Runner/Parser/LazyAutowiredFactoryParser.swift +++ b/Binary/Sources/Deli/Runner/Parser/LazyAutowiredFactoryParser.swift @@ -29,7 +29,11 @@ final class LazyAutowiredFactoryParser: Parsable { // MARK: - Private - private func convert(name: String, fileContent: String) -> String? { + private func convert( + name: String, + fileContent: String, + typealiasMap: [String: String] + ) -> String? { guard let nameMatch = Constant.typeRegex.findFirst(in: name) else { return name } guard let nameResult = nameMatch.group(at: 2) else { return name } @@ -39,7 +43,11 @@ final class LazyAutowiredFactoryParser: Parsable { guard let typeResult = typeMatch.group(at: 1) else { return nil } return typeResult } - private func convertPayload(name: String, fileContent: String) -> String? { + private func convertPayload( + name: String, + fileContent: String, + typealiasMap: [String: String] + ) -> String? { guard let nameMatch = Constant.payloadTypeRegex.findFirst(in: name) else { return name } guard let payloadName = nameMatch.group(at: 2) else { return name } @@ -69,8 +77,13 @@ final class LazyAutowiredFactoryParser: Parsable { // MARK: - Public - func parse(by source: Structure, fileContent: String) throws -> [Results] { - guard let name = source.name else { + func parse( + by source: Structure, + fileContent: String, + typePrefix: String, + typealiasMap: [String: String] + ) throws -> [Results] { + guard let name = source.name.map({ typePrefix + $0 }) else { Logger.log(.assert("Unknown structure name.")) return [] } @@ -126,7 +139,7 @@ final class LazyAutowiredFactoryParser: Parsable { Logger.log(.error("Unknown `\(name)` dependency type.", info.getSourceLine(with: fileContent))) throw ParserError.typeNotFound } - guard let dependencyName = convert(name: typeName, fileContent: fileContent) else { + guard let dependencyName = convert(name: typeName, fileContent: fileContent, typealiasMap: typealiasMap) else { Logger.log(.error("Not found an aliased type named `\(name).\(typeName)`.", info.getSourceLine(with: fileContent))) throw ParserError.typeNotFound } @@ -138,7 +151,7 @@ final class LazyAutowiredFactoryParser: Parsable { return Dependency( parent: name, target: injector, - name: arrayType, + name: typealiasMap[arrayType] ?? arrayType, type: .array, qualifier: qualifier, qualifierBy: qualifierBy @@ -147,7 +160,7 @@ final class LazyAutowiredFactoryParser: Parsable { return Dependency( parent: name, target: injector, - name: dependencyName, + name: typealiasMap[dependencyName] ?? dependencyName, qualifier: qualifier, qualifierBy: qualifierBy ) @@ -162,7 +175,7 @@ final class LazyAutowiredFactoryParser: Parsable { Logger.log(.error("Not found payload type.", info.getSourceLine(with: fileContent))) throw ParserError.payloadNotFound } - guard let payloadName = convertPayload(name: typeName, fileContent: fileContent) else { + guard let payloadName = convertPayload(name: typeName, fileContent: fileContent, typealiasMap: typealiasMap) else { Logger.log(.error("Not found an aliased type named `\(name).\(typeName)`.", info.getSourceLine(with: fileContent))) throw ParserError.payloadNotFound } @@ -170,7 +183,7 @@ final class LazyAutowiredFactoryParser: Parsable { return Dependency( parent: name, target: constructor, - name: payloadName + name: typealiasMap[payloadName] ?? payloadName ) }() diff --git a/Binary/Sources/Deli/Runner/Parser/LazyAutowiredParser.swift b/Binary/Sources/Deli/Runner/Parser/LazyAutowiredParser.swift index eb59b71..3cd97a1 100644 --- a/Binary/Sources/Deli/Runner/Parser/LazyAutowiredParser.swift +++ b/Binary/Sources/Deli/Runner/Parser/LazyAutowiredParser.swift @@ -23,7 +23,11 @@ final class LazyAutowiredParser: Parsable { // MARK: - Private - private func convert(name: String, fileContent: String) -> String? { + private func convert( + name: String, + fileContent: String, + typealiasMap: [String: String] + ) -> String? { guard let nameMatch = Constant.typeRegex.findFirst(in: name) else { return name } guard let nameResult = nameMatch.group(at: 2) else { return name } @@ -43,8 +47,13 @@ final class LazyAutowiredParser: Parsable { // MARK: - Public - func parse(by source: Structure, fileContent: String) throws -> [Results] { - guard let name = source.name else { + func parse( + by source: Structure, + fileContent: String, + typePrefix: String, + typealiasMap: [String: String] + ) throws -> [Results] { + guard let name = source.name.map({ typePrefix + $0 }) else { Logger.log(.assert("Unknown structure name.")) return [] } @@ -86,7 +95,7 @@ final class LazyAutowiredParser: Parsable { Logger.log(.error("Unknown `\(name)` dependency type.", info.getSourceLine(with: fileContent))) throw ParserError.typeNotFound } - guard let dependencyName = convert(name: typeName, fileContent: fileContent) else { + guard let dependencyName = convert(name: typeName, fileContent: fileContent, typealiasMap: typealiasMap) else { Logger.log(.error("Not found an aliased type named `\(name).\(typeName)`.", info.getSourceLine(with: fileContent))) throw ParserError.typeNotFound } @@ -98,7 +107,7 @@ final class LazyAutowiredParser: Parsable { return Dependency( parent: name, target: injector, - name: arrayType, + name: typealiasMap[arrayType] ?? arrayType, type: .array, qualifier: qualifier, qualifierBy: qualifierBy @@ -107,7 +116,7 @@ final class LazyAutowiredParser: Parsable { return Dependency( parent: name, target: injector, - name: dependencyName, + name: typealiasMap[dependencyName] ?? dependencyName, qualifier: qualifier, qualifierBy: qualifierBy ) diff --git a/Binary/Sources/Deli/Type/DependencyParsable.swift b/Binary/Sources/Deli/Type/DependencyParsable.swift index 7a122ba..208be11 100644 --- a/Binary/Sources/Deli/Type/DependencyParsable.swift +++ b/Binary/Sources/Deli/Type/DependencyParsable.swift @@ -4,5 +4,10 @@ // protocol DependencyParsable { - func parse(by source: Structure, fileContent: String) throws -> [Dependency] + func parse( + by source: Structure, + fileContent: String, + typePrefix: String, + typealiasMap: [String: String] + ) throws -> [Dependency] } diff --git a/Binary/Sources/Deli/Type/Parsable.swift b/Binary/Sources/Deli/Type/Parsable.swift index e0d2e41..237034c 100644 --- a/Binary/Sources/Deli/Type/Parsable.swift +++ b/Binary/Sources/Deli/Type/Parsable.swift @@ -6,7 +6,12 @@ protocol Parsable { var dependency: [DependencyParsable] { get } - func parse(by source: Structure, fileContent: String) throws -> [Results] + func parse( + by source: Structure, + fileContent: String, + typePrefix: String, + typealiasMap: [String: String] + ) throws -> [Results] } extension Parsable { var dependency: [DependencyParsable] { diff --git a/Deli.xcodeproj/project.pbxproj b/Deli.xcodeproj/project.pbxproj index 3009758..cf40e50 100644 --- a/Deli.xcodeproj/project.pbxproj +++ b/Deli.xcodeproj/project.pbxproj @@ -5,10 +5,10 @@ objects = { "Deli::Deli" = { isa = "PBXNativeTarget"; - buildConfigurationList = "OBJ_211"; + buildConfigurationList = "OBJ_212"; buildPhases = ( - "OBJ_214", - "OBJ_239" + "OBJ_215", + "OBJ_240" ); dependencies = ( ); @@ -24,27 +24,27 @@ }; "Deli::DeliPackageTests::ProductTarget" = { isa = "PBXAggregateTarget"; - buildConfigurationList = "OBJ_247"; + buildConfigurationList = "OBJ_248"; buildPhases = ( ); dependencies = ( - "OBJ_250" + "OBJ_251" ); name = "DeliPackageTests"; productName = "DeliPackageTests"; }; "Deli::DeliTests" = { isa = "PBXNativeTarget"; - buildConfigurationList = "OBJ_252"; + buildConfigurationList = "OBJ_253"; buildPhases = ( - "OBJ_255", - "OBJ_310" + "OBJ_256", + "OBJ_312" ); dependencies = ( - "OBJ_315", "OBJ_317", "OBJ_319", - "OBJ_321" + "OBJ_321", + "OBJ_323" ); name = "DeliTests"; productName = "DeliTests"; @@ -58,9 +58,9 @@ }; "Deli::SwiftPMPackageDescription" = { isa = "PBXNativeTarget"; - buildConfigurationList = "OBJ_241"; + buildConfigurationList = "OBJ_242"; buildPhases = ( - "OBJ_244" + "OBJ_245" ); dependencies = ( ); @@ -70,10 +70,10 @@ }; "Nimble::Nimble" = { isa = "PBXNativeTarget"; - buildConfigurationList = "OBJ_322"; + buildConfigurationList = "OBJ_324"; buildPhases = ( - "OBJ_325", - "OBJ_378" + "OBJ_327", + "OBJ_380" ); dependencies = ( ); @@ -89,9 +89,9 @@ }; "Nimble::SwiftPMPackageDescription" = { isa = "PBXNativeTarget"; - buildConfigurationList = "OBJ_380"; + buildConfigurationList = "OBJ_382"; buildPhases = ( - "OBJ_383" + "OBJ_385" ); dependencies = ( ); @@ -113,7 +113,7 @@ "en" ); mainGroup = "OBJ_5"; - productRefGroup = "OBJ_192"; + productRefGroup = "OBJ_193"; projectDirPath = "."; targets = ( "Deli::Deli", @@ -136,87 +136,92 @@ isa = "PBXGroup"; children = ( "OBJ_101", - "OBJ_128", - "OBJ_132" + "OBJ_134" ); - name = "Quick 2.2.0"; + name = "Dependencies"; path = ""; - sourceTree = "SOURCE_ROOT"; + sourceTree = ""; }; "OBJ_101" = { isa = "PBXGroup"; children = ( "OBJ_102", + "OBJ_129", + "OBJ_133" + ); + name = "Quick 2.2.0"; + path = ""; + sourceTree = "SOURCE_ROOT"; + }; + "OBJ_102" = { + isa = "PBXGroup"; + children = ( "OBJ_103", "OBJ_104", - "OBJ_107", - "OBJ_110", + "OBJ_105", + "OBJ_108", "OBJ_111", "OBJ_112", "OBJ_113", "OBJ_114", "OBJ_115", - "OBJ_120", + "OBJ_116", "OBJ_121", "OBJ_122", "OBJ_123", "OBJ_124", "OBJ_125", "OBJ_126", - "OBJ_127" + "OBJ_127", + "OBJ_128" ); name = "Quick"; path = ".build/checkouts/Quick/Sources/Quick"; sourceTree = "SOURCE_ROOT"; }; - "OBJ_102" = { + "OBJ_103" = { isa = "PBXFileReference"; path = "Behavior.swift"; sourceTree = ""; }; - "OBJ_103" = { + "OBJ_104" = { isa = "PBXFileReference"; path = "Callsite.swift"; sourceTree = ""; }; - "OBJ_104" = { + "OBJ_105" = { isa = "PBXGroup"; children = ( - "OBJ_105", - "OBJ_106" + "OBJ_106", + "OBJ_107" ); name = "Configuration"; path = "Configuration"; sourceTree = ""; }; - "OBJ_105" = { + "OBJ_106" = { isa = "PBXFileReference"; path = "Configuration.swift"; sourceTree = ""; }; - "OBJ_106" = { + "OBJ_107" = { isa = "PBXFileReference"; path = "QuickConfiguration.swift"; sourceTree = ""; }; - "OBJ_107" = { + "OBJ_108" = { isa = "PBXGroup"; children = ( - "OBJ_108", - "OBJ_109" + "OBJ_109", + "OBJ_110" ); name = "DSL"; path = "DSL"; sourceTree = ""; }; - "OBJ_108" = { - isa = "PBXFileReference"; - path = "DSL.swift"; - sourceTree = ""; - }; "OBJ_109" = { isa = "PBXFileReference"; - path = "World+DSL.swift"; + path = "DSL.swift"; sourceTree = ""; }; "OBJ_11" = { @@ -226,59 +231,59 @@ }; "OBJ_110" = { isa = "PBXFileReference"; - path = "ErrorUtility.swift"; + path = "World+DSL.swift"; sourceTree = ""; }; "OBJ_111" = { isa = "PBXFileReference"; - path = "Example.swift"; + path = "ErrorUtility.swift"; sourceTree = ""; }; "OBJ_112" = { isa = "PBXFileReference"; - path = "ExampleGroup.swift"; + path = "Example.swift"; sourceTree = ""; }; "OBJ_113" = { isa = "PBXFileReference"; - path = "ExampleMetadata.swift"; + path = "ExampleGroup.swift"; sourceTree = ""; }; "OBJ_114" = { isa = "PBXFileReference"; - path = "Filter.swift"; + path = "ExampleMetadata.swift"; sourceTree = ""; }; "OBJ_115" = { + isa = "PBXFileReference"; + path = "Filter.swift"; + sourceTree = ""; + }; + "OBJ_116" = { isa = "PBXGroup"; children = ( - "OBJ_116", "OBJ_117", "OBJ_118", - "OBJ_119" + "OBJ_119", + "OBJ_120" ); name = "Hooks"; path = "Hooks"; sourceTree = ""; }; - "OBJ_116" = { - isa = "PBXFileReference"; - path = "Closures.swift"; - sourceTree = ""; - }; "OBJ_117" = { isa = "PBXFileReference"; - path = "ExampleHooks.swift"; + path = "Closures.swift"; sourceTree = ""; }; "OBJ_118" = { isa = "PBXFileReference"; - path = "HooksPhase.swift"; + path = "ExampleHooks.swift"; sourceTree = ""; }; "OBJ_119" = { isa = "PBXFileReference"; - path = "SuiteHooks.swift"; + path = "HooksPhase.swift"; sourceTree = ""; }; "OBJ_12" = { @@ -288,146 +293,146 @@ }; "OBJ_120" = { isa = "PBXFileReference"; - path = "NSBundle+CurrentTestBundle.swift"; + path = "SuiteHooks.swift"; sourceTree = ""; }; "OBJ_121" = { isa = "PBXFileReference"; - path = "QuickMain.swift"; + path = "NSBundle+CurrentTestBundle.swift"; sourceTree = ""; }; "OBJ_122" = { isa = "PBXFileReference"; - path = "QuickSelectedTestSuiteBuilder.swift"; + path = "QuickMain.swift"; sourceTree = ""; }; "OBJ_123" = { isa = "PBXFileReference"; - path = "QuickSpec.swift"; + path = "QuickSelectedTestSuiteBuilder.swift"; sourceTree = ""; }; "OBJ_124" = { isa = "PBXFileReference"; - path = "QuickTestSuite.swift"; + path = "QuickSpec.swift"; sourceTree = ""; }; "OBJ_125" = { isa = "PBXFileReference"; - path = "String+C99ExtendedIdentifier.swift"; + path = "QuickTestSuite.swift"; sourceTree = ""; }; "OBJ_126" = { isa = "PBXFileReference"; - path = "URL+FileName.swift"; + path = "String+C99ExtendedIdentifier.swift"; sourceTree = ""; }; "OBJ_127" = { isa = "PBXFileReference"; - path = "World.swift"; + path = "URL+FileName.swift"; sourceTree = ""; }; "OBJ_128" = { + isa = "PBXFileReference"; + path = "World.swift"; + sourceTree = ""; + }; + "OBJ_129" = { isa = "PBXGroup"; children = ( - "OBJ_129", - "OBJ_130" + "OBJ_130", + "OBJ_131" ); name = "QuickSpecBase"; path = ".build/checkouts/Quick/Sources/QuickSpecBase"; sourceTree = "SOURCE_ROOT"; }; - "OBJ_129" = { - isa = "PBXFileReference"; - path = "QuickSpecBase.m"; - sourceTree = ""; - }; "OBJ_13" = { isa = "PBXFileReference"; path = "Configuration.swift"; sourceTree = ""; }; "OBJ_130" = { + isa = "PBXFileReference"; + path = "QuickSpecBase.m"; + sourceTree = ""; + }; + "OBJ_131" = { isa = "PBXGroup"; children = ( - "OBJ_131" + "OBJ_132" ); name = "include"; path = "include"; sourceTree = ""; }; - "OBJ_131" = { + "OBJ_132" = { isa = "PBXFileReference"; path = "QuickSpecBase.h"; sourceTree = ""; }; - "OBJ_132" = { + "OBJ_133" = { isa = "PBXFileReference"; explicitFileType = "sourcecode.swift"; name = "Package.swift"; path = "/Users/kawoou/GitHub/Deli/.build/checkouts/Quick/Package.swift"; sourceTree = ""; }; - "OBJ_133" = { + "OBJ_134" = { isa = "PBXGroup"; children = ( - "OBJ_134", - "OBJ_191" + "OBJ_135", + "OBJ_192" ); name = "Nimble 8.0.2"; path = ""; sourceTree = "SOURCE_ROOT"; }; - "OBJ_134" = { + "OBJ_135" = { isa = "PBXGroup"; children = ( - "OBJ_135", - "OBJ_145", + "OBJ_136", "OBJ_146", "OBJ_147", "OBJ_148", "OBJ_149", "OBJ_150", "OBJ_151", - "OBJ_185" + "OBJ_152", + "OBJ_186" ); name = "Nimble"; path = ".build/checkouts/Nimble/Sources/Nimble"; sourceTree = "SOURCE_ROOT"; }; - "OBJ_135" = { + "OBJ_136" = { isa = "PBXGroup"; children = ( - "OBJ_136", "OBJ_137", "OBJ_138", "OBJ_139", "OBJ_140", "OBJ_141", "OBJ_142", - "OBJ_143" + "OBJ_143", + "OBJ_144" ); name = "Adapters"; path = "Adapters"; sourceTree = ""; }; - "OBJ_136" = { - isa = "PBXFileReference"; - path = "AdapterProtocols.swift"; - sourceTree = ""; - }; "OBJ_137" = { isa = "PBXFileReference"; - path = "AssertionDispatcher.swift"; + path = "AdapterProtocols.swift"; sourceTree = ""; }; "OBJ_138" = { isa = "PBXFileReference"; - path = "AssertionRecorder.swift"; + path = "AssertionDispatcher.swift"; sourceTree = ""; }; "OBJ_139" = { isa = "PBXFileReference"; - path = "NMBExpectation.swift"; + path = "AssertionRecorder.swift"; sourceTree = ""; }; "OBJ_14" = { @@ -445,56 +450,56 @@ }; "OBJ_140" = { isa = "PBXFileReference"; - path = "NMBObjCMatcher.swift"; + path = "NMBExpectation.swift"; sourceTree = ""; }; "OBJ_141" = { isa = "PBXFileReference"; - path = "NimbleEnvironment.swift"; + path = "NMBObjCMatcher.swift"; sourceTree = ""; }; "OBJ_142" = { isa = "PBXFileReference"; - path = "NimbleXCTestHandler.swift"; + path = "NimbleEnvironment.swift"; sourceTree = ""; }; "OBJ_143" = { + isa = "PBXFileReference"; + path = "NimbleXCTestHandler.swift"; + sourceTree = ""; + }; + "OBJ_144" = { isa = "PBXGroup"; children = ( - "OBJ_144" + "OBJ_145" ); name = "NonObjectiveC"; path = "NonObjectiveC"; sourceTree = ""; }; - "OBJ_144" = { - isa = "PBXFileReference"; - path = "ExceptionCapture.swift"; - sourceTree = ""; - }; "OBJ_145" = { isa = "PBXFileReference"; - path = "DSL+Wait.swift"; + path = "ExceptionCapture.swift"; sourceTree = ""; }; "OBJ_146" = { isa = "PBXFileReference"; - path = "DSL.swift"; + path = "DSL+Wait.swift"; sourceTree = ""; }; "OBJ_147" = { isa = "PBXFileReference"; - path = "Expectation.swift"; + path = "DSL.swift"; sourceTree = ""; }; "OBJ_148" = { isa = "PBXFileReference"; - path = "ExpectationMessage.swift"; + path = "Expectation.swift"; sourceTree = ""; }; "OBJ_149" = { isa = "PBXFileReference"; - path = "Expression.swift"; + path = "ExpectationMessage.swift"; sourceTree = ""; }; "OBJ_15" = { @@ -504,13 +509,17 @@ }; "OBJ_150" = { isa = "PBXFileReference"; - path = "FailureMessage.swift"; + path = "Expression.swift"; sourceTree = ""; }; "OBJ_151" = { + isa = "PBXFileReference"; + path = "FailureMessage.swift"; + sourceTree = ""; + }; + "OBJ_152" = { isa = "PBXGroup"; children = ( - "OBJ_152", "OBJ_153", "OBJ_154", "OBJ_155", @@ -542,50 +551,46 @@ "OBJ_181", "OBJ_182", "OBJ_183", - "OBJ_184" + "OBJ_184", + "OBJ_185" ); name = "Matchers"; path = "Matchers"; sourceTree = ""; }; - "OBJ_152" = { - isa = "PBXFileReference"; - path = "AllPass.swift"; - sourceTree = ""; - }; "OBJ_153" = { isa = "PBXFileReference"; - path = "Async.swift"; + path = "AllPass.swift"; sourceTree = ""; }; "OBJ_154" = { isa = "PBXFileReference"; - path = "BeAKindOf.swift"; + path = "Async.swift"; sourceTree = ""; }; "OBJ_155" = { isa = "PBXFileReference"; - path = "BeAnInstanceOf.swift"; + path = "BeAKindOf.swift"; sourceTree = ""; }; "OBJ_156" = { isa = "PBXFileReference"; - path = "BeCloseTo.swift"; + path = "BeAnInstanceOf.swift"; sourceTree = ""; }; "OBJ_157" = { isa = "PBXFileReference"; - path = "BeEmpty.swift"; + path = "BeCloseTo.swift"; sourceTree = ""; }; "OBJ_158" = { isa = "PBXFileReference"; - path = "BeGreaterThan.swift"; + path = "BeEmpty.swift"; sourceTree = ""; }; "OBJ_159" = { isa = "PBXFileReference"; - path = "BeGreaterThanOrEqualTo.swift"; + path = "BeGreaterThan.swift"; sourceTree = ""; }; "OBJ_16" = { @@ -601,52 +606,52 @@ }; "OBJ_160" = { isa = "PBXFileReference"; - path = "BeIdenticalTo.swift"; + path = "BeGreaterThanOrEqualTo.swift"; sourceTree = ""; }; "OBJ_161" = { isa = "PBXFileReference"; - path = "BeLessThan.swift"; + path = "BeIdenticalTo.swift"; sourceTree = ""; }; "OBJ_162" = { isa = "PBXFileReference"; - path = "BeLessThanOrEqual.swift"; + path = "BeLessThan.swift"; sourceTree = ""; }; "OBJ_163" = { isa = "PBXFileReference"; - path = "BeLogical.swift"; + path = "BeLessThanOrEqual.swift"; sourceTree = ""; }; "OBJ_164" = { isa = "PBXFileReference"; - path = "BeNil.swift"; + path = "BeLogical.swift"; sourceTree = ""; }; "OBJ_165" = { isa = "PBXFileReference"; - path = "BeVoid.swift"; + path = "BeNil.swift"; sourceTree = ""; }; "OBJ_166" = { isa = "PBXFileReference"; - path = "BeginWith.swift"; + path = "BeVoid.swift"; sourceTree = ""; }; "OBJ_167" = { isa = "PBXFileReference"; - path = "Contain.swift"; + path = "BeginWith.swift"; sourceTree = ""; }; "OBJ_168" = { isa = "PBXFileReference"; - path = "ContainElementSatisfying.swift"; + path = "Contain.swift"; sourceTree = ""; }; "OBJ_169" = { isa = "PBXFileReference"; - path = "ElementsEqual.swift"; + path = "ContainElementSatisfying.swift"; sourceTree = ""; }; "OBJ_17" = { @@ -656,52 +661,52 @@ }; "OBJ_170" = { isa = "PBXFileReference"; - path = "EndWith.swift"; + path = "ElementsEqual.swift"; sourceTree = ""; }; "OBJ_171" = { isa = "PBXFileReference"; - path = "Equal.swift"; + path = "EndWith.swift"; sourceTree = ""; }; "OBJ_172" = { isa = "PBXFileReference"; - path = "HaveCount.swift"; + path = "Equal.swift"; sourceTree = ""; }; "OBJ_173" = { isa = "PBXFileReference"; - path = "Match.swift"; + path = "HaveCount.swift"; sourceTree = ""; }; "OBJ_174" = { isa = "PBXFileReference"; - path = "MatchError.swift"; + path = "Match.swift"; sourceTree = ""; }; "OBJ_175" = { isa = "PBXFileReference"; - path = "MatcherFunc.swift"; + path = "MatchError.swift"; sourceTree = ""; }; "OBJ_176" = { isa = "PBXFileReference"; - path = "MatcherProtocols.swift"; + path = "MatcherFunc.swift"; sourceTree = ""; }; "OBJ_177" = { isa = "PBXFileReference"; - path = "PostNotification.swift"; + path = "MatcherProtocols.swift"; sourceTree = ""; }; "OBJ_178" = { isa = "PBXFileReference"; - path = "Predicate.swift"; + path = "PostNotification.swift"; sourceTree = ""; }; "OBJ_179" = { isa = "PBXFileReference"; - path = "RaisesException.swift"; + path = "Predicate.swift"; sourceTree = ""; }; "OBJ_18" = { @@ -711,60 +716,60 @@ }; "OBJ_180" = { isa = "PBXFileReference"; - path = "SatisfyAllOf.swift"; + path = "RaisesException.swift"; sourceTree = ""; }; "OBJ_181" = { isa = "PBXFileReference"; - path = "SatisfyAnyOf.swift"; + path = "SatisfyAllOf.swift"; sourceTree = ""; }; "OBJ_182" = { isa = "PBXFileReference"; - path = "ThrowAssertion.swift"; + path = "SatisfyAnyOf.swift"; sourceTree = ""; }; "OBJ_183" = { isa = "PBXFileReference"; - path = "ThrowError.swift"; + path = "ThrowAssertion.swift"; sourceTree = ""; }; "OBJ_184" = { isa = "PBXFileReference"; - path = "ToSucceed.swift"; + path = "ThrowError.swift"; sourceTree = ""; }; "OBJ_185" = { + isa = "PBXFileReference"; + path = "ToSucceed.swift"; + sourceTree = ""; + }; + "OBJ_186" = { isa = "PBXGroup"; children = ( - "OBJ_186", "OBJ_187", "OBJ_188", "OBJ_189", - "OBJ_190" + "OBJ_190", + "OBJ_191" ); name = "Utils"; path = "Utils"; sourceTree = ""; }; - "OBJ_186" = { - isa = "PBXFileReference"; - path = "Await.swift"; - sourceTree = ""; - }; "OBJ_187" = { isa = "PBXFileReference"; - path = "Errors.swift"; + path = "Await.swift"; sourceTree = ""; }; "OBJ_188" = { isa = "PBXFileReference"; - path = "Functional.swift"; + path = "Errors.swift"; sourceTree = ""; }; "OBJ_189" = { isa = "PBXFileReference"; - path = "SourceLocation.swift"; + path = "Functional.swift"; sourceTree = ""; }; "OBJ_19" = { @@ -774,37 +779,37 @@ }; "OBJ_190" = { isa = "PBXFileReference"; - path = "Stringers.swift"; + path = "SourceLocation.swift"; sourceTree = ""; }; "OBJ_191" = { + isa = "PBXFileReference"; + path = "Stringers.swift"; + sourceTree = ""; + }; + "OBJ_192" = { isa = "PBXFileReference"; explicitFileType = "sourcecode.swift"; name = "Package.swift"; path = "/Users/kawoou/GitHub/Deli/.build/checkouts/Nimble/Package.swift"; sourceTree = ""; }; - "OBJ_192" = { + "OBJ_193" = { isa = "PBXGroup"; children = ( - "Deli::Deli::Product", - "Deli::DeliTests::Product", "Quick::Quick::Product", "Quick::QuickSpecBase::Product", - "Nimble::Nimble::Product" + "Deli::Deli::Product", + "Nimble::Nimble::Product", + "Deli::DeliTests::Product" ); name = "Products"; path = ""; sourceTree = "BUILT_PRODUCTS_DIR"; }; - "OBJ_198" = { - isa = "PBXFileReference"; - path = "Design"; - sourceTree = "SOURCE_ROOT"; - }; "OBJ_199" = { isa = "PBXFileReference"; - path = "Supports"; + path = "Design"; sourceTree = "SOURCE_ROOT"; }; "OBJ_2" = { @@ -823,52 +828,52 @@ }; "OBJ_200" = { isa = "PBXFileReference"; - path = "Examples"; + path = "Supports"; sourceTree = "SOURCE_ROOT"; }; "OBJ_201" = { isa = "PBXFileReference"; - path = "Binary"; + path = "Examples"; sourceTree = "SOURCE_ROOT"; }; "OBJ_202" = { isa = "PBXFileReference"; - path = "codecov.yml"; - sourceTree = ""; + path = "Binary"; + sourceTree = "SOURCE_ROOT"; }; "OBJ_203" = { isa = "PBXFileReference"; - path = "LICENSE"; + path = "codecov.yml"; sourceTree = ""; }; "OBJ_204" = { isa = "PBXFileReference"; - path = "README_KR.md"; + path = "LICENSE"; sourceTree = ""; }; "OBJ_205" = { isa = "PBXFileReference"; - path = "README.md"; + path = "README_KR.md"; sourceTree = ""; }; "OBJ_206" = { isa = "PBXFileReference"; - path = "Deli.podspec"; + path = "README.md"; sourceTree = ""; }; "OBJ_207" = { isa = "PBXFileReference"; - path = "version"; + path = "Deli.podspec"; sourceTree = ""; }; "OBJ_208" = { isa = "PBXFileReference"; - path = "deli.yml"; + path = "version"; sourceTree = ""; }; "OBJ_209" = { isa = "PBXFileReference"; - path = "DeliBinary.podspec"; + path = "deli.yml"; sourceTree = ""; }; "OBJ_21" = { @@ -880,16 +885,21 @@ path = "Error"; sourceTree = ""; }; - "OBJ_211" = { + "OBJ_210" = { + isa = "PBXFileReference"; + path = "DeliBinary.podspec"; + sourceTree = ""; + }; + "OBJ_212" = { isa = "XCConfigurationList"; buildConfigurations = ( - "OBJ_212", - "OBJ_213" + "OBJ_213", + "OBJ_214" ); defaultConfigurationIsVisible = "0"; defaultConfigurationName = "Release"; }; - "OBJ_212" = { + "OBJ_213" = { isa = "XCBuildConfiguration"; buildSettings = { ENABLE_TESTABILITY = "YES"; @@ -930,7 +940,7 @@ }; name = "Debug"; }; - "OBJ_213" = { + "OBJ_214" = { isa = "XCBuildConfiguration"; buildSettings = { ENABLE_TESTABILITY = "YES"; @@ -971,10 +981,9 @@ }; name = "Release"; }; - "OBJ_214" = { + "OBJ_215" = { isa = "PBXSourcesBuildPhase"; files = ( - "OBJ_215", "OBJ_216", "OBJ_217", "OBJ_218", @@ -997,28 +1006,25 @@ "OBJ_235", "OBJ_236", "OBJ_237", - "OBJ_238" + "OBJ_238", + "OBJ_239" ); }; - "OBJ_215" = { - isa = "PBXBuildFile"; - fileRef = "OBJ_9"; - }; "OBJ_216" = { isa = "PBXBuildFile"; - fileRef = "OBJ_10"; + fileRef = "OBJ_9"; }; "OBJ_217" = { isa = "PBXBuildFile"; - fileRef = "OBJ_11"; + fileRef = "OBJ_10"; }; "OBJ_218" = { isa = "PBXBuildFile"; - fileRef = "OBJ_12"; + fileRef = "OBJ_11"; }; "OBJ_219" = { isa = "PBXBuildFile"; - fileRef = "OBJ_13"; + fileRef = "OBJ_12"; }; "OBJ_22" = { isa = "PBXFileReference"; @@ -1027,43 +1033,43 @@ }; "OBJ_220" = { isa = "PBXBuildFile"; - fileRef = "OBJ_15"; + fileRef = "OBJ_13"; }; "OBJ_221" = { isa = "PBXBuildFile"; - fileRef = "OBJ_17"; + fileRef = "OBJ_15"; }; "OBJ_222" = { isa = "PBXBuildFile"; - fileRef = "OBJ_18"; + fileRef = "OBJ_17"; }; "OBJ_223" = { isa = "PBXBuildFile"; - fileRef = "OBJ_19"; + fileRef = "OBJ_18"; }; "OBJ_224" = { isa = "PBXBuildFile"; - fileRef = "OBJ_20"; + fileRef = "OBJ_19"; }; "OBJ_225" = { isa = "PBXBuildFile"; - fileRef = "OBJ_22"; + fileRef = "OBJ_20"; }; "OBJ_226" = { isa = "PBXBuildFile"; - fileRef = "OBJ_24"; + fileRef = "OBJ_22"; }; "OBJ_227" = { isa = "PBXBuildFile"; - fileRef = "OBJ_25"; + fileRef = "OBJ_24"; }; "OBJ_228" = { isa = "PBXBuildFile"; - fileRef = "OBJ_26"; + fileRef = "OBJ_25"; }; "OBJ_229" = { isa = "PBXBuildFile"; - fileRef = "OBJ_27"; + fileRef = "OBJ_26"; }; "OBJ_23" = { isa = "PBXGroup"; @@ -1082,60 +1088,64 @@ }; "OBJ_230" = { isa = "PBXBuildFile"; - fileRef = "OBJ_28"; + fileRef = "OBJ_27"; }; "OBJ_231" = { isa = "PBXBuildFile"; - fileRef = "OBJ_29"; + fileRef = "OBJ_28"; }; "OBJ_232" = { isa = "PBXBuildFile"; - fileRef = "OBJ_30"; + fileRef = "OBJ_29"; }; "OBJ_233" = { isa = "PBXBuildFile"; - fileRef = "OBJ_31"; + fileRef = "OBJ_30"; }; "OBJ_234" = { isa = "PBXBuildFile"; - fileRef = "OBJ_32"; + fileRef = "OBJ_31"; }; "OBJ_235" = { isa = "PBXBuildFile"; - fileRef = "OBJ_33"; + fileRef = "OBJ_32"; }; "OBJ_236" = { isa = "PBXBuildFile"; - fileRef = "OBJ_34"; + fileRef = "OBJ_33"; }; "OBJ_237" = { isa = "PBXBuildFile"; - fileRef = "OBJ_35"; + fileRef = "OBJ_34"; }; "OBJ_238" = { isa = "PBXBuildFile"; - fileRef = "OBJ_36"; + fileRef = "OBJ_35"; }; "OBJ_239" = { - isa = "PBXFrameworksBuildPhase"; - files = ( - ); + isa = "PBXBuildFile"; + fileRef = "OBJ_36"; }; "OBJ_24" = { isa = "PBXFileReference"; path = "FactoryResolver.swift"; sourceTree = ""; }; - "OBJ_241" = { + "OBJ_240" = { + isa = "PBXFrameworksBuildPhase"; + files = ( + ); + }; + "OBJ_242" = { isa = "XCConfigurationList"; buildConfigurations = ( - "OBJ_242", - "OBJ_243" + "OBJ_243", + "OBJ_244" ); defaultConfigurationIsVisible = "0"; defaultConfigurationName = "Release"; }; - "OBJ_242" = { + "OBJ_243" = { isa = "XCBuildConfiguration"; buildSettings = { LD = "/usr/bin/true"; @@ -1155,7 +1165,7 @@ }; name = "Debug"; }; - "OBJ_243" = { + "OBJ_244" = { isa = "XCBuildConfiguration"; buildSettings = { LD = "/usr/bin/true"; @@ -1175,36 +1185,30 @@ }; name = "Release"; }; - "OBJ_244" = { + "OBJ_245" = { isa = "PBXSourcesBuildPhase"; files = ( - "OBJ_245" + "OBJ_246" ); }; - "OBJ_245" = { + "OBJ_246" = { isa = "PBXBuildFile"; fileRef = "OBJ_6"; }; - "OBJ_247" = { + "OBJ_248" = { isa = "XCConfigurationList"; buildConfigurations = ( - "OBJ_248", - "OBJ_249" + "OBJ_249", + "OBJ_250" ); defaultConfigurationIsVisible = "0"; defaultConfigurationName = "Release"; }; - "OBJ_248" = { - isa = "XCBuildConfiguration"; - buildSettings = { - }; - name = "Debug"; - }; "OBJ_249" = { isa = "XCBuildConfiguration"; buildSettings = { }; - name = "Release"; + name = "Debug"; }; "OBJ_25" = { isa = "PBXFileReference"; @@ -1212,19 +1216,25 @@ sourceTree = ""; }; "OBJ_250" = { + isa = "XCBuildConfiguration"; + buildSettings = { + }; + name = "Release"; + }; + "OBJ_251" = { isa = "PBXTargetDependency"; target = "Deli::DeliTests"; }; - "OBJ_252" = { + "OBJ_253" = { isa = "XCConfigurationList"; buildConfigurations = ( - "OBJ_253", - "OBJ_254" + "OBJ_254", + "OBJ_255" ); defaultConfigurationIsVisible = "0"; defaultConfigurationName = "Release"; }; - "OBJ_253" = { + "OBJ_254" = { isa = "XCBuildConfiguration"; buildSettings = { CLANG_ENABLE_MODULES = "YES"; @@ -1264,7 +1274,7 @@ }; name = "Debug"; }; - "OBJ_254" = { + "OBJ_255" = { isa = "XCBuildConfiguration"; buildSettings = { CLANG_ENABLE_MODULES = "YES"; @@ -1304,10 +1314,9 @@ }; name = "Release"; }; - "OBJ_255" = { + "OBJ_256" = { isa = "PBXSourcesBuildPhase"; files = ( - "OBJ_256", "OBJ_257", "OBJ_258", "OBJ_259", @@ -1360,24 +1369,22 @@ "OBJ_306", "OBJ_307", "OBJ_308", - "OBJ_309" + "OBJ_309", + "OBJ_310", + "OBJ_311" ); }; - "OBJ_256" = { - isa = "PBXBuildFile"; - fileRef = "OBJ_40"; - }; "OBJ_257" = { isa = "PBXBuildFile"; - fileRef = "OBJ_41"; + fileRef = "OBJ_40"; }; "OBJ_258" = { isa = "PBXBuildFile"; - fileRef = "OBJ_42"; + fileRef = "OBJ_41"; }; "OBJ_259" = { isa = "PBXBuildFile"; - fileRef = "OBJ_44"; + fileRef = "OBJ_42"; }; "OBJ_26" = { isa = "PBXFileReference"; @@ -1386,43 +1393,43 @@ }; "OBJ_260" = { isa = "PBXBuildFile"; - fileRef = "OBJ_45"; + fileRef = "OBJ_44"; }; "OBJ_261" = { isa = "PBXBuildFile"; - fileRef = "OBJ_46"; + fileRef = "OBJ_45"; }; "OBJ_262" = { isa = "PBXBuildFile"; - fileRef = "OBJ_47"; + fileRef = "OBJ_46"; }; "OBJ_263" = { isa = "PBXBuildFile"; - fileRef = "OBJ_48"; + fileRef = "OBJ_47"; }; "OBJ_264" = { isa = "PBXBuildFile"; - fileRef = "OBJ_49"; + fileRef = "OBJ_48"; }; "OBJ_265" = { isa = "PBXBuildFile"; - fileRef = "OBJ_50"; + fileRef = "OBJ_49"; }; "OBJ_266" = { isa = "PBXBuildFile"; - fileRef = "OBJ_51"; + fileRef = "OBJ_50"; }; "OBJ_267" = { isa = "PBXBuildFile"; - fileRef = "OBJ_52"; + fileRef = "OBJ_51"; }; "OBJ_268" = { isa = "PBXBuildFile"; - fileRef = "OBJ_53"; + fileRef = "OBJ_52"; }; "OBJ_269" = { isa = "PBXBuildFile"; - fileRef = "OBJ_54"; + fileRef = "OBJ_53"; }; "OBJ_27" = { isa = "PBXFileReference"; @@ -1431,43 +1438,43 @@ }; "OBJ_270" = { isa = "PBXBuildFile"; - fileRef = "OBJ_55"; + fileRef = "OBJ_54"; }; "OBJ_271" = { isa = "PBXBuildFile"; - fileRef = "OBJ_56"; + fileRef = "OBJ_55"; }; "OBJ_272" = { isa = "PBXBuildFile"; - fileRef = "OBJ_57"; + fileRef = "OBJ_56"; }; "OBJ_273" = { isa = "PBXBuildFile"; - fileRef = "OBJ_58"; + fileRef = "OBJ_57"; }; "OBJ_274" = { isa = "PBXBuildFile"; - fileRef = "OBJ_59"; + fileRef = "OBJ_58"; }; "OBJ_275" = { isa = "PBXBuildFile"; - fileRef = "OBJ_60"; + fileRef = "OBJ_59"; }; "OBJ_276" = { isa = "PBXBuildFile"; - fileRef = "OBJ_62"; + fileRef = "OBJ_60"; }; "OBJ_277" = { isa = "PBXBuildFile"; - fileRef = "OBJ_63"; + fileRef = "OBJ_61"; }; "OBJ_278" = { isa = "PBXBuildFile"; - fileRef = "OBJ_64"; + fileRef = "OBJ_63"; }; "OBJ_279" = { isa = "PBXBuildFile"; - fileRef = "OBJ_65"; + fileRef = "OBJ_64"; }; "OBJ_28" = { isa = "PBXFileReference"; @@ -1476,43 +1483,43 @@ }; "OBJ_280" = { isa = "PBXBuildFile"; - fileRef = "OBJ_66"; + fileRef = "OBJ_65"; }; "OBJ_281" = { isa = "PBXBuildFile"; - fileRef = "OBJ_67"; + fileRef = "OBJ_66"; }; "OBJ_282" = { isa = "PBXBuildFile"; - fileRef = "OBJ_68"; + fileRef = "OBJ_67"; }; "OBJ_283" = { isa = "PBXBuildFile"; - fileRef = "OBJ_69"; + fileRef = "OBJ_68"; }; "OBJ_284" = { isa = "PBXBuildFile"; - fileRef = "OBJ_70"; + fileRef = "OBJ_69"; }; "OBJ_285" = { isa = "PBXBuildFile"; - fileRef = "OBJ_72"; + fileRef = "OBJ_70"; }; "OBJ_286" = { isa = "PBXBuildFile"; - fileRef = "OBJ_73"; + fileRef = "OBJ_71"; }; "OBJ_287" = { isa = "PBXBuildFile"; - fileRef = "OBJ_74"; + fileRef = "OBJ_73"; }; "OBJ_288" = { isa = "PBXBuildFile"; - fileRef = "OBJ_75"; + fileRef = "OBJ_74"; }; "OBJ_289" = { isa = "PBXBuildFile"; - fileRef = "OBJ_77"; + fileRef = "OBJ_75"; }; "OBJ_29" = { isa = "PBXFileReference"; @@ -1521,43 +1528,43 @@ }; "OBJ_290" = { isa = "PBXBuildFile"; - fileRef = "OBJ_78"; + fileRef = "OBJ_76"; }; "OBJ_291" = { isa = "PBXBuildFile"; - fileRef = "OBJ_79"; + fileRef = "OBJ_78"; }; "OBJ_292" = { isa = "PBXBuildFile"; - fileRef = "OBJ_80"; + fileRef = "OBJ_79"; }; "OBJ_293" = { isa = "PBXBuildFile"; - fileRef = "OBJ_81"; + fileRef = "OBJ_80"; }; "OBJ_294" = { isa = "PBXBuildFile"; - fileRef = "OBJ_82"; + fileRef = "OBJ_81"; }; "OBJ_295" = { isa = "PBXBuildFile"; - fileRef = "OBJ_83"; + fileRef = "OBJ_82"; }; "OBJ_296" = { isa = "PBXBuildFile"; - fileRef = "OBJ_84"; + fileRef = "OBJ_83"; }; "OBJ_297" = { isa = "PBXBuildFile"; - fileRef = "OBJ_85"; + fileRef = "OBJ_84"; }; "OBJ_298" = { isa = "PBXBuildFile"; - fileRef = "OBJ_86"; + fileRef = "OBJ_85"; }; "OBJ_299" = { isa = "PBXBuildFile"; - fileRef = "OBJ_87"; + fileRef = "OBJ_86"; }; "OBJ_3" = { isa = "XCBuildConfiguration"; @@ -1608,43 +1615,43 @@ }; "OBJ_300" = { isa = "PBXBuildFile"; - fileRef = "OBJ_88"; + fileRef = "OBJ_87"; }; "OBJ_301" = { isa = "PBXBuildFile"; - fileRef = "OBJ_89"; + fileRef = "OBJ_88"; }; "OBJ_302" = { isa = "PBXBuildFile"; - fileRef = "OBJ_90"; + fileRef = "OBJ_89"; }; "OBJ_303" = { isa = "PBXBuildFile"; - fileRef = "OBJ_91"; + fileRef = "OBJ_90"; }; "OBJ_304" = { isa = "PBXBuildFile"; - fileRef = "OBJ_92"; + fileRef = "OBJ_91"; }; "OBJ_305" = { isa = "PBXBuildFile"; - fileRef = "OBJ_93"; + fileRef = "OBJ_92"; }; "OBJ_306" = { isa = "PBXBuildFile"; - fileRef = "OBJ_94"; + fileRef = "OBJ_93"; }; "OBJ_307" = { isa = "PBXBuildFile"; - fileRef = "OBJ_95"; + fileRef = "OBJ_94"; }; "OBJ_308" = { isa = "PBXBuildFile"; - fileRef = "OBJ_97"; + fileRef = "OBJ_95"; }; "OBJ_309" = { isa = "PBXBuildFile"; - fileRef = "OBJ_98"; + fileRef = "OBJ_96"; }; "OBJ_31" = { isa = "PBXFileReference"; @@ -1652,41 +1659,45 @@ sourceTree = ""; }; "OBJ_310" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_98"; + }; + "OBJ_311" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_99"; + }; + "OBJ_312" = { isa = "PBXFrameworksBuildPhase"; files = ( - "OBJ_311", - "OBJ_312", "OBJ_313", - "OBJ_314" + "OBJ_314", + "OBJ_315", + "OBJ_316" ); }; - "OBJ_311" = { + "OBJ_313" = { isa = "PBXBuildFile"; fileRef = "Nimble::Nimble::Product"; }; - "OBJ_312" = { + "OBJ_314" = { isa = "PBXBuildFile"; fileRef = "Quick::Quick::Product"; }; - "OBJ_313" = { + "OBJ_315" = { isa = "PBXBuildFile"; fileRef = "Quick::QuickSpecBase::Product"; }; - "OBJ_314" = { + "OBJ_316" = { isa = "PBXBuildFile"; fileRef = "Deli::Deli::Product"; }; - "OBJ_315" = { - isa = "PBXTargetDependency"; - target = "Nimble::Nimble"; - }; "OBJ_317" = { isa = "PBXTargetDependency"; - target = "Quick::Quick"; + target = "Nimble::Nimble"; }; "OBJ_319" = { isa = "PBXTargetDependency"; - target = "Quick::QuickSpecBase"; + target = "Quick::Quick"; }; "OBJ_32" = { isa = "PBXFileReference"; @@ -1694,19 +1705,23 @@ sourceTree = ""; }; "OBJ_321" = { + isa = "PBXTargetDependency"; + target = "Quick::QuickSpecBase"; + }; + "OBJ_323" = { isa = "PBXTargetDependency"; target = "Deli::Deli"; }; - "OBJ_322" = { + "OBJ_324" = { isa = "XCConfigurationList"; buildConfigurations = ( - "OBJ_323", - "OBJ_324" + "OBJ_325", + "OBJ_326" ); defaultConfigurationIsVisible = "0"; defaultConfigurationName = "Release"; }; - "OBJ_323" = { + "OBJ_325" = { isa = "XCBuildConfiguration"; buildSettings = { ENABLE_TESTABILITY = "YES"; @@ -1747,7 +1762,7 @@ }; name = "Debug"; }; - "OBJ_324" = { + "OBJ_326" = { isa = "XCBuildConfiguration"; buildSettings = { ENABLE_TESTABILITY = "YES"; @@ -1788,11 +1803,9 @@ }; name = "Release"; }; - "OBJ_325" = { + "OBJ_327" = { isa = "PBXSourcesBuildPhase"; files = ( - "OBJ_326", - "OBJ_327", "OBJ_328", "OBJ_329", "OBJ_330", @@ -1842,24 +1855,18 @@ "OBJ_374", "OBJ_375", "OBJ_376", - "OBJ_377" + "OBJ_377", + "OBJ_378", + "OBJ_379" ); }; - "OBJ_326" = { - isa = "PBXBuildFile"; - fileRef = "OBJ_136"; - }; - "OBJ_327" = { - isa = "PBXBuildFile"; - fileRef = "OBJ_137"; - }; "OBJ_328" = { isa = "PBXBuildFile"; - fileRef = "OBJ_138"; + fileRef = "OBJ_137"; }; "OBJ_329" = { isa = "PBXBuildFile"; - fileRef = "OBJ_139"; + fileRef = "OBJ_138"; }; "OBJ_33" = { isa = "PBXFileReference"; @@ -1868,43 +1875,43 @@ }; "OBJ_330" = { isa = "PBXBuildFile"; - fileRef = "OBJ_140"; + fileRef = "OBJ_139"; }; "OBJ_331" = { isa = "PBXBuildFile"; - fileRef = "OBJ_141"; + fileRef = "OBJ_140"; }; "OBJ_332" = { isa = "PBXBuildFile"; - fileRef = "OBJ_142"; + fileRef = "OBJ_141"; }; "OBJ_333" = { isa = "PBXBuildFile"; - fileRef = "OBJ_144"; + fileRef = "OBJ_142"; }; "OBJ_334" = { isa = "PBXBuildFile"; - fileRef = "OBJ_145"; + fileRef = "OBJ_143"; }; "OBJ_335" = { isa = "PBXBuildFile"; - fileRef = "OBJ_146"; + fileRef = "OBJ_145"; }; "OBJ_336" = { isa = "PBXBuildFile"; - fileRef = "OBJ_147"; + fileRef = "OBJ_146"; }; "OBJ_337" = { isa = "PBXBuildFile"; - fileRef = "OBJ_148"; + fileRef = "OBJ_147"; }; "OBJ_338" = { isa = "PBXBuildFile"; - fileRef = "OBJ_149"; + fileRef = "OBJ_148"; }; "OBJ_339" = { isa = "PBXBuildFile"; - fileRef = "OBJ_150"; + fileRef = "OBJ_149"; }; "OBJ_34" = { isa = "PBXFileReference"; @@ -1913,43 +1920,43 @@ }; "OBJ_340" = { isa = "PBXBuildFile"; - fileRef = "OBJ_152"; + fileRef = "OBJ_150"; }; "OBJ_341" = { isa = "PBXBuildFile"; - fileRef = "OBJ_153"; + fileRef = "OBJ_151"; }; "OBJ_342" = { isa = "PBXBuildFile"; - fileRef = "OBJ_154"; + fileRef = "OBJ_153"; }; "OBJ_343" = { isa = "PBXBuildFile"; - fileRef = "OBJ_155"; + fileRef = "OBJ_154"; }; "OBJ_344" = { isa = "PBXBuildFile"; - fileRef = "OBJ_156"; + fileRef = "OBJ_155"; }; "OBJ_345" = { isa = "PBXBuildFile"; - fileRef = "OBJ_157"; + fileRef = "OBJ_156"; }; "OBJ_346" = { isa = "PBXBuildFile"; - fileRef = "OBJ_158"; + fileRef = "OBJ_157"; }; "OBJ_347" = { isa = "PBXBuildFile"; - fileRef = "OBJ_159"; + fileRef = "OBJ_158"; }; "OBJ_348" = { isa = "PBXBuildFile"; - fileRef = "OBJ_160"; + fileRef = "OBJ_159"; }; "OBJ_349" = { isa = "PBXBuildFile"; - fileRef = "OBJ_161"; + fileRef = "OBJ_160"; }; "OBJ_35" = { isa = "PBXFileReference"; @@ -1958,43 +1965,43 @@ }; "OBJ_350" = { isa = "PBXBuildFile"; - fileRef = "OBJ_162"; + fileRef = "OBJ_161"; }; "OBJ_351" = { isa = "PBXBuildFile"; - fileRef = "OBJ_163"; + fileRef = "OBJ_162"; }; "OBJ_352" = { isa = "PBXBuildFile"; - fileRef = "OBJ_164"; + fileRef = "OBJ_163"; }; "OBJ_353" = { isa = "PBXBuildFile"; - fileRef = "OBJ_165"; + fileRef = "OBJ_164"; }; "OBJ_354" = { isa = "PBXBuildFile"; - fileRef = "OBJ_166"; + fileRef = "OBJ_165"; }; "OBJ_355" = { isa = "PBXBuildFile"; - fileRef = "OBJ_167"; + fileRef = "OBJ_166"; }; "OBJ_356" = { isa = "PBXBuildFile"; - fileRef = "OBJ_168"; + fileRef = "OBJ_167"; }; "OBJ_357" = { isa = "PBXBuildFile"; - fileRef = "OBJ_169"; + fileRef = "OBJ_168"; }; "OBJ_358" = { isa = "PBXBuildFile"; - fileRef = "OBJ_170"; + fileRef = "OBJ_169"; }; "OBJ_359" = { isa = "PBXBuildFile"; - fileRef = "OBJ_171"; + fileRef = "OBJ_170"; }; "OBJ_36" = { isa = "PBXFileReference"; @@ -2003,43 +2010,43 @@ }; "OBJ_360" = { isa = "PBXBuildFile"; - fileRef = "OBJ_172"; + fileRef = "OBJ_171"; }; "OBJ_361" = { isa = "PBXBuildFile"; - fileRef = "OBJ_173"; + fileRef = "OBJ_172"; }; "OBJ_362" = { isa = "PBXBuildFile"; - fileRef = "OBJ_174"; + fileRef = "OBJ_173"; }; "OBJ_363" = { isa = "PBXBuildFile"; - fileRef = "OBJ_175"; + fileRef = "OBJ_174"; }; "OBJ_364" = { isa = "PBXBuildFile"; - fileRef = "OBJ_176"; + fileRef = "OBJ_175"; }; "OBJ_365" = { isa = "PBXBuildFile"; - fileRef = "OBJ_177"; + fileRef = "OBJ_176"; }; "OBJ_366" = { isa = "PBXBuildFile"; - fileRef = "OBJ_178"; + fileRef = "OBJ_177"; }; "OBJ_367" = { isa = "PBXBuildFile"; - fileRef = "OBJ_179"; + fileRef = "OBJ_178"; }; "OBJ_368" = { isa = "PBXBuildFile"; - fileRef = "OBJ_180"; + fileRef = "OBJ_179"; }; "OBJ_369" = { isa = "PBXBuildFile"; - fileRef = "OBJ_181"; + fileRef = "OBJ_180"; }; "OBJ_37" = { isa = "PBXGroup"; @@ -2052,62 +2059,70 @@ }; "OBJ_370" = { isa = "PBXBuildFile"; - fileRef = "OBJ_182"; + fileRef = "OBJ_181"; }; "OBJ_371" = { isa = "PBXBuildFile"; - fileRef = "OBJ_183"; + fileRef = "OBJ_182"; }; "OBJ_372" = { isa = "PBXBuildFile"; - fileRef = "OBJ_184"; + fileRef = "OBJ_183"; }; "OBJ_373" = { isa = "PBXBuildFile"; - fileRef = "OBJ_186"; + fileRef = "OBJ_184"; }; "OBJ_374" = { isa = "PBXBuildFile"; - fileRef = "OBJ_187"; + fileRef = "OBJ_185"; }; "OBJ_375" = { isa = "PBXBuildFile"; - fileRef = "OBJ_188"; + fileRef = "OBJ_187"; }; "OBJ_376" = { isa = "PBXBuildFile"; - fileRef = "OBJ_189"; + fileRef = "OBJ_188"; }; "OBJ_377" = { isa = "PBXBuildFile"; - fileRef = "OBJ_190"; + fileRef = "OBJ_189"; }; "OBJ_378" = { - isa = "PBXFrameworksBuildPhase"; - files = ( - ); + isa = "PBXBuildFile"; + fileRef = "OBJ_190"; + }; + "OBJ_379" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_191"; }; "OBJ_38" = { isa = "PBXGroup"; children = ( "OBJ_39", - "OBJ_95", - "OBJ_96" + "OBJ_96", + "OBJ_97" ); name = "DeliTests"; path = "Tests/DeliTests"; sourceTree = "SOURCE_ROOT"; }; "OBJ_380" = { + isa = "PBXFrameworksBuildPhase"; + files = ( + ); + }; + "OBJ_382" = { isa = "XCConfigurationList"; buildConfigurations = ( - "OBJ_381", - "OBJ_382" + "OBJ_383", + "OBJ_384" ); defaultConfigurationIsVisible = "0"; defaultConfigurationName = "Release"; }; - "OBJ_381" = { + "OBJ_383" = { isa = "XCBuildConfiguration"; buildSettings = { LD = "/usr/bin/true"; @@ -2127,7 +2142,7 @@ }; name = "Debug"; }; - "OBJ_382" = { + "OBJ_384" = { isa = "XCBuildConfiguration"; buildSettings = { LD = "/usr/bin/true"; @@ -2147,26 +2162,26 @@ }; name = "Release"; }; - "OBJ_383" = { + "OBJ_385" = { isa = "PBXSourcesBuildPhase"; files = ( - "OBJ_384" + "OBJ_386" ); }; - "OBJ_384" = { + "OBJ_386" = { isa = "PBXBuildFile"; - fileRef = "OBJ_191"; + fileRef = "OBJ_192"; }; - "OBJ_385" = { + "OBJ_387" = { isa = "XCConfigurationList"; buildConfigurations = ( - "OBJ_386", - "OBJ_387" + "OBJ_388", + "OBJ_389" ); defaultConfigurationIsVisible = "0"; defaultConfigurationName = "Release"; }; - "OBJ_386" = { + "OBJ_388" = { isa = "XCBuildConfiguration"; buildSettings = { ENABLE_TESTABILITY = "YES"; @@ -2208,7 +2223,7 @@ }; name = "Debug"; }; - "OBJ_387" = { + "OBJ_389" = { isa = "XCBuildConfiguration"; buildSettings = { ENABLE_TESTABILITY = "YES"; @@ -2230,57 +2245,25 @@ OTHER_CFLAGS = ( "$(inherited)" ); - OTHER_LDFLAGS = ( - "$(inherited)" - ); - OTHER_SWIFT_FLAGS = ( - "$(inherited)" - ); - PRODUCT_BUNDLE_IDENTIFIER = "Quick"; - PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = "YES"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = ( - "$(inherited)" - ); - SWIFT_VERSION = "5.0"; - TARGET_NAME = "Quick"; - TVOS_DEPLOYMENT_TARGET = "9.0"; - WATCHOS_DEPLOYMENT_TARGET = "2.0"; - }; - name = "Release"; - }; - "OBJ_388" = { - isa = "PBXSourcesBuildPhase"; - files = ( - "OBJ_389", - "OBJ_390", - "OBJ_391", - "OBJ_392", - "OBJ_393", - "OBJ_394", - "OBJ_395", - "OBJ_396", - "OBJ_397", - "OBJ_398", - "OBJ_399", - "OBJ_400", - "OBJ_401", - "OBJ_402", - "OBJ_403", - "OBJ_404", - "OBJ_405", - "OBJ_406", - "OBJ_407", - "OBJ_408", - "OBJ_409", - "OBJ_410", - "OBJ_411" - ); - }; - "OBJ_389" = { - isa = "PBXBuildFile"; - fileRef = "OBJ_102"; + OTHER_LDFLAGS = ( + "$(inherited)" + ); + OTHER_SWIFT_FLAGS = ( + "$(inherited)" + ); + PRODUCT_BUNDLE_IDENTIFIER = "Quick"; + PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = "YES"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = ( + "$(inherited)" + ); + SWIFT_VERSION = "5.0"; + TARGET_NAME = "Quick"; + TVOS_DEPLOYMENT_TARGET = "9.0"; + WATCHOS_DEPLOYMENT_TARGET = "2.0"; + }; + name = "Release"; }; "OBJ_39" = { isa = "PBXGroup"; @@ -2301,9 +2284,9 @@ "OBJ_59", "OBJ_60", "OBJ_61", - "OBJ_71", - "OBJ_76", - "OBJ_81", + "OBJ_62", + "OBJ_72", + "OBJ_77", "OBJ_82", "OBJ_83", "OBJ_84", @@ -2316,51 +2299,76 @@ "OBJ_91", "OBJ_92", "OBJ_93", - "OBJ_94" + "OBJ_94", + "OBJ_95" ); name = "DeliSample"; path = "DeliSample"; sourceTree = ""; }; "OBJ_390" = { - isa = "PBXBuildFile"; - fileRef = "OBJ_103"; + isa = "PBXSourcesBuildPhase"; + files = ( + "OBJ_391", + "OBJ_392", + "OBJ_393", + "OBJ_394", + "OBJ_395", + "OBJ_396", + "OBJ_397", + "OBJ_398", + "OBJ_399", + "OBJ_400", + "OBJ_401", + "OBJ_402", + "OBJ_403", + "OBJ_404", + "OBJ_405", + "OBJ_406", + "OBJ_407", + "OBJ_408", + "OBJ_409", + "OBJ_410", + "OBJ_411", + "OBJ_412", + "OBJ_413" + ); }; "OBJ_391" = { isa = "PBXBuildFile"; - fileRef = "OBJ_105"; + fileRef = "OBJ_103"; }; "OBJ_392" = { isa = "PBXBuildFile"; - fileRef = "OBJ_106"; + fileRef = "OBJ_104"; }; "OBJ_393" = { isa = "PBXBuildFile"; - fileRef = "OBJ_108"; + fileRef = "OBJ_106"; }; "OBJ_394" = { isa = "PBXBuildFile"; - fileRef = "OBJ_109"; + fileRef = "OBJ_107"; }; "OBJ_395" = { isa = "PBXBuildFile"; - fileRef = "OBJ_110"; + fileRef = "OBJ_109"; }; "OBJ_396" = { isa = "PBXBuildFile"; - fileRef = "OBJ_111"; + fileRef = "OBJ_110"; }; "OBJ_397" = { isa = "PBXBuildFile"; - fileRef = "OBJ_112"; + fileRef = "OBJ_111"; }; "OBJ_398" = { isa = "PBXBuildFile"; - fileRef = "OBJ_113"; + fileRef = "OBJ_112"; }; "OBJ_399" = { isa = "PBXBuildFile"; - fileRef = "OBJ_114"; + fileRef = "OBJ_113"; }; "OBJ_4" = { isa = "XCBuildConfiguration"; @@ -2407,43 +2415,43 @@ }; "OBJ_400" = { isa = "PBXBuildFile"; - fileRef = "OBJ_116"; + fileRef = "OBJ_114"; }; "OBJ_401" = { isa = "PBXBuildFile"; - fileRef = "OBJ_117"; + fileRef = "OBJ_115"; }; "OBJ_402" = { isa = "PBXBuildFile"; - fileRef = "OBJ_118"; + fileRef = "OBJ_117"; }; "OBJ_403" = { isa = "PBXBuildFile"; - fileRef = "OBJ_119"; + fileRef = "OBJ_118"; }; "OBJ_404" = { isa = "PBXBuildFile"; - fileRef = "OBJ_120"; + fileRef = "OBJ_119"; }; "OBJ_405" = { isa = "PBXBuildFile"; - fileRef = "OBJ_121"; + fileRef = "OBJ_120"; }; "OBJ_406" = { isa = "PBXBuildFile"; - fileRef = "OBJ_122"; + fileRef = "OBJ_121"; }; "OBJ_407" = { isa = "PBXBuildFile"; - fileRef = "OBJ_123"; + fileRef = "OBJ_122"; }; "OBJ_408" = { isa = "PBXBuildFile"; - fileRef = "OBJ_124"; + fileRef = "OBJ_123"; }; "OBJ_409" = { isa = "PBXBuildFile"; - fileRef = "OBJ_125"; + fileRef = "OBJ_124"; }; "OBJ_41" = { isa = "PBXFileReference"; @@ -2452,36 +2460,44 @@ }; "OBJ_410" = { isa = "PBXBuildFile"; - fileRef = "OBJ_126"; + fileRef = "OBJ_125"; }; "OBJ_411" = { isa = "PBXBuildFile"; - fileRef = "OBJ_127"; + fileRef = "OBJ_126"; }; "OBJ_412" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_127"; + }; + "OBJ_413" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_128"; + }; + "OBJ_414" = { isa = "PBXFrameworksBuildPhase"; files = ( - "OBJ_413" + "OBJ_415" ); }; - "OBJ_413" = { + "OBJ_415" = { isa = "PBXBuildFile"; fileRef = "Quick::QuickSpecBase::Product"; }; - "OBJ_414" = { + "OBJ_416" = { isa = "PBXTargetDependency"; target = "Quick::QuickSpecBase"; }; - "OBJ_416" = { + "OBJ_418" = { isa = "XCConfigurationList"; buildConfigurations = ( - "OBJ_417", - "OBJ_418" + "OBJ_419", + "OBJ_420" ); defaultConfigurationIsVisible = "0"; defaultConfigurationName = "Release"; }; - "OBJ_417" = { + "OBJ_419" = { isa = "XCBuildConfiguration"; buildSettings = { LD = "/usr/bin/true"; @@ -2501,7 +2517,12 @@ }; name = "Debug"; }; - "OBJ_418" = { + "OBJ_42" = { + isa = "PBXFileReference"; + path = "AlwaysModel.swift"; + sourceTree = ""; + }; + "OBJ_420" = { isa = "XCBuildConfiguration"; buildSettings = { LD = "/usr/bin/true"; @@ -2521,31 +2542,26 @@ }; name = "Release"; }; - "OBJ_419" = { + "OBJ_421" = { isa = "PBXSourcesBuildPhase"; files = ( - "OBJ_420" + "OBJ_422" ); }; - "OBJ_42" = { - isa = "PBXFileReference"; - path = "AlwaysModel.swift"; - sourceTree = ""; - }; - "OBJ_420" = { + "OBJ_422" = { isa = "PBXBuildFile"; - fileRef = "OBJ_132"; + fileRef = "OBJ_133"; }; - "OBJ_421" = { + "OBJ_423" = { isa = "XCConfigurationList"; buildConfigurations = ( - "OBJ_422", - "OBJ_423" + "OBJ_424", + "OBJ_425" ); defaultConfigurationIsVisible = "0"; defaultConfigurationName = "Release"; }; - "OBJ_422" = { + "OBJ_424" = { isa = "XCBuildConfiguration"; buildSettings = { CLANG_ENABLE_MODULES = "YES"; @@ -2588,7 +2604,7 @@ }; name = "Debug"; }; - "OBJ_423" = { + "OBJ_425" = { isa = "XCBuildConfiguration"; buildSettings = { CLANG_ENABLE_MODULES = "YES"; @@ -2631,36 +2647,31 @@ }; name = "Release"; }; - "OBJ_424" = { + "OBJ_426" = { isa = "PBXSourcesBuildPhase"; files = ( - "OBJ_425" + "OBJ_427" ); }; - "OBJ_425" = { + "OBJ_427" = { isa = "PBXBuildFile"; - fileRef = "OBJ_129"; + fileRef = "OBJ_130"; }; - "OBJ_426" = { + "OBJ_428" = { isa = "PBXHeadersBuildPhase"; files = ( - "OBJ_427" + "OBJ_429" ); }; - "OBJ_427" = { + "OBJ_429" = { isa = "PBXBuildFile"; - fileRef = "OBJ_131"; + fileRef = "OBJ_132"; settings = { ATTRIBUTES = ( "Public" ); }; }; - "OBJ_428" = { - isa = "PBXFrameworksBuildPhase"; - files = ( - ); - }; "OBJ_43" = { isa = "PBXGroup"; children = ( @@ -2675,6 +2686,11 @@ path = "Book"; sourceTree = ""; }; + "OBJ_430" = { + isa = "PBXFrameworksBuildPhase"; + files = ( + ); + }; "OBJ_44" = { isa = "PBXFileReference"; path = "Book.swift"; @@ -2711,9 +2727,8 @@ "OBJ_6", "OBJ_7", "OBJ_37", - "OBJ_99", - "OBJ_192", - "OBJ_198", + "OBJ_100", + "OBJ_193", "OBJ_199", "OBJ_200", "OBJ_201", @@ -2724,7 +2739,8 @@ "OBJ_206", "OBJ_207", "OBJ_208", - "OBJ_209" + "OBJ_209", + "OBJ_210" ); path = ""; sourceTree = ""; @@ -2787,13 +2803,17 @@ }; "OBJ_60" = { isa = "PBXFileReference"; - path = "NetworkManager.swift"; + path = "NestedType.swift"; sourceTree = ""; }; "OBJ_61" = { + isa = "PBXFileReference"; + path = "NetworkManager.swift"; + sourceTree = ""; + }; + "OBJ_62" = { isa = "PBXGroup"; children = ( - "OBJ_62", "OBJ_63", "OBJ_64", "OBJ_65", @@ -2801,50 +2821,46 @@ "OBJ_67", "OBJ_68", "OBJ_69", - "OBJ_70" + "OBJ_70", + "OBJ_71" ); name = "Property"; path = "Property"; sourceTree = ""; }; - "OBJ_62" = { - isa = "PBXFileReference"; - path = "InjectPropertyTest.swift"; - sourceTree = ""; - }; "OBJ_63" = { isa = "PBXFileReference"; - path = "NetworkMethod.swift"; + path = "InjectPropertyTest.swift"; sourceTree = ""; }; "OBJ_64" = { isa = "PBXFileReference"; - path = "NetworkProvider.swift"; + path = "NetworkMethod.swift"; sourceTree = ""; }; "OBJ_65" = { isa = "PBXFileReference"; - path = "PropertyAutowired.swift"; + path = "NetworkProvider.swift"; sourceTree = ""; }; "OBJ_66" = { isa = "PBXFileReference"; - path = "PropertyAutowiredFactory.swift"; + path = "PropertyAutowired.swift"; sourceTree = ""; }; "OBJ_67" = { isa = "PBXFileReference"; - path = "PropertyInject.swift"; + path = "PropertyAutowiredFactory.swift"; sourceTree = ""; }; "OBJ_68" = { isa = "PBXFileReference"; - path = "PropertyLazyAutowired.swift"; + path = "PropertyInject.swift"; sourceTree = ""; }; "OBJ_69" = { isa = "PBXFileReference"; - path = "PropertyLazyAutowiredFactory.swift"; + path = "PropertyLazyAutowired.swift"; sourceTree = ""; }; "OBJ_7" = { @@ -2858,66 +2874,66 @@ }; "OBJ_70" = { isa = "PBXFileReference"; - path = "ServerConfig.swift"; + path = "PropertyLazyAutowiredFactory.swift"; sourceTree = ""; }; "OBJ_71" = { + isa = "PBXFileReference"; + path = "ServerConfig.swift"; + sourceTree = ""; + }; + "OBJ_72" = { isa = "PBXGroup"; children = ( - "OBJ_72", "OBJ_73", "OBJ_74", - "OBJ_75" + "OBJ_75", + "OBJ_76" ); name = "Robot"; path = "Robot"; sourceTree = ""; }; - "OBJ_72" = { + "OBJ_73" = { isa = "PBXFileReference"; path = "Robot.swift"; sourceTree = ""; }; - "OBJ_73" = { + "OBJ_74" = { isa = "PBXFileReference"; path = "RobotBody.swift"; sourceTree = ""; }; - "OBJ_74" = { + "OBJ_75" = { isa = "PBXFileReference"; path = "RobotFactory.swift"; sourceTree = ""; }; - "OBJ_75" = { + "OBJ_76" = { isa = "PBXFileReference"; path = "RobotHead.swift"; sourceTree = ""; }; - "OBJ_76" = { + "OBJ_77" = { isa = "PBXGroup"; children = ( - "OBJ_77", "OBJ_78", "OBJ_79", - "OBJ_80" + "OBJ_80", + "OBJ_81" ); name = "Struct"; path = "Struct"; sourceTree = ""; }; - "OBJ_77" = { - isa = "PBXFileReference"; - path = "StructWithAutowired.swift"; - sourceTree = ""; - }; "OBJ_78" = { isa = "PBXFileReference"; - path = "StructWithAutowiredFactory.swift"; + path = "StructWithAutowired.swift"; sourceTree = ""; }; "OBJ_79" = { isa = "PBXFileReference"; - path = "StructWithComponent.swift"; + path = "StructWithAutowiredFactory.swift"; sourceTree = ""; }; "OBJ_8" = { @@ -2942,52 +2958,52 @@ }; "OBJ_80" = { isa = "PBXFileReference"; - path = "StructWithLazyAutowired.swift"; + path = "StructWithComponent.swift"; sourceTree = ""; }; "OBJ_81" = { isa = "PBXFileReference"; - path = "TestDeliFactory.swift"; + path = "StructWithLazyAutowired.swift"; sourceTree = ""; }; "OBJ_82" = { isa = "PBXFileReference"; - path = "TestDeliObject.swift"; + path = "TestDeliFactory.swift"; sourceTree = ""; }; "OBJ_83" = { isa = "PBXFileReference"; - path = "TestNotRegister.swift"; + path = "TestDeliObject.swift"; sourceTree = ""; }; "OBJ_84" = { isa = "PBXFileReference"; - path = "TestPayload.swift"; + path = "TestNotRegister.swift"; sourceTree = ""; }; "OBJ_85" = { isa = "PBXFileReference"; - path = "TestRegister.swift"; + path = "TestPayload.swift"; sourceTree = ""; }; "OBJ_86" = { isa = "PBXFileReference"; - path = "TestService.swift"; + path = "TestRegister.swift"; sourceTree = ""; }; "OBJ_87" = { isa = "PBXFileReference"; - path = "TestView1.swift"; + path = "TestService.swift"; sourceTree = ""; }; "OBJ_88" = { isa = "PBXFileReference"; - path = "TestView2.swift"; + path = "TestView1.swift"; sourceTree = ""; }; "OBJ_89" = { isa = "PBXFileReference"; - path = "TestView3.swift"; + path = "TestView2.swift"; sourceTree = ""; }; "OBJ_9" = { @@ -2997,73 +3013,68 @@ }; "OBJ_90" = { isa = "PBXFileReference"; - path = "TestViewModel.swift"; + path = "TestView3.swift"; sourceTree = ""; }; "OBJ_91" = { isa = "PBXFileReference"; - path = "UnicodeTest.swift"; + path = "TestViewModel.swift"; sourceTree = ""; }; "OBJ_92" = { isa = "PBXFileReference"; - path = "UserPayload.swift"; + path = "UnicodeTest.swift"; sourceTree = ""; }; "OBJ_93" = { isa = "PBXFileReference"; - path = "UserViewModel.swift"; + path = "UserPayload.swift"; sourceTree = ""; }; "OBJ_94" = { isa = "PBXFileReference"; - path = "WeakViewModel.swift"; + path = "UserViewModel.swift"; sourceTree = ""; }; "OBJ_95" = { isa = "PBXFileReference"; - path = "DeliSpec.swift"; + path = "WeakViewModel.swift"; sourceTree = ""; }; "OBJ_96" = { + isa = "PBXFileReference"; + path = "DeliSpec.swift"; + sourceTree = ""; + }; + "OBJ_97" = { isa = "PBXGroup"; children = ( - "OBJ_97", - "OBJ_98" + "OBJ_98", + "OBJ_99" ); name = "Mock"; path = "Mock"; sourceTree = ""; }; - "OBJ_97" = { + "OBJ_98" = { isa = "PBXFileReference"; path = "MockAccountService.swift"; sourceTree = ""; }; - "OBJ_98" = { + "OBJ_99" = { isa = "PBXFileReference"; path = "MockBook.swift"; sourceTree = ""; }; - "OBJ_99" = { - isa = "PBXGroup"; - children = ( - "OBJ_100", - "OBJ_133" - ); - name = "Dependencies"; - path = ""; - sourceTree = ""; - }; "Quick::Quick" = { isa = "PBXNativeTarget"; - buildConfigurationList = "OBJ_385"; + buildConfigurationList = "OBJ_387"; buildPhases = ( - "OBJ_388", - "OBJ_412" + "OBJ_390", + "OBJ_414" ); dependencies = ( - "OBJ_414" + "OBJ_416" ); name = "Quick"; productName = "Quick"; @@ -3077,11 +3088,11 @@ }; "Quick::QuickSpecBase" = { isa = "PBXNativeTarget"; - buildConfigurationList = "OBJ_421"; + buildConfigurationList = "OBJ_423"; buildPhases = ( - "OBJ_424", "OBJ_426", - "OBJ_428" + "OBJ_428", + "OBJ_430" ); dependencies = ( ); @@ -3097,9 +3108,9 @@ }; "Quick::SwiftPMPackageDescription" = { isa = "PBXNativeTarget"; - buildConfigurationList = "OBJ_416"; + buildConfigurationList = "OBJ_418"; buildPhases = ( - "OBJ_419" + "OBJ_421" ); dependencies = ( ); diff --git a/Deli.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Deli.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 919434a..fe1aa71 100644 --- a/Deli.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/Deli.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -4,4 +4,4 @@ - + \ No newline at end of file diff --git a/Deli.xcodeproj/xcshareddata/xcschemes/Deli-Package.xcscheme b/Deli.xcodeproj/xcshareddata/xcschemes/Deli-Package.xcscheme index cab9aa3..542482b 100644 --- a/Deli.xcodeproj/xcshareddata/xcschemes/Deli-Package.xcscheme +++ b/Deli.xcodeproj/xcshareddata/xcschemes/Deli-Package.xcscheme @@ -1,68 +1,33 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/Sources/Deli/Component.swift b/Sources/Deli/Component.swift index 1219c76..e041dbc 100644 --- a/Sources/Deli/Component.swift +++ b/Sources/Deli/Component.swift @@ -15,6 +15,6 @@ public protocol Component: Inject { var scope: Scope { get } } public extension Component { - public var qualifier: String? { return nil } - public var scope: Scope { return .singleton } + var qualifier: String? { return nil } + var scope: Scope { return .singleton } } diff --git a/Sources/Deli/Inject.swift b/Sources/Deli/Inject.swift index 75109cb..8fdc21a 100644 --- a/Sources/Deli/Inject.swift +++ b/Sources/Deli/Inject.swift @@ -19,7 +19,7 @@ public extension Inject { /// - qualifier: The registered qualifier. /// - resolveRole: The resolve role(default: recursive) /// - Returns: The resolved instance. - public static func Inject( + static func Inject( _ type: T.Type, qualifier: String? = nil, resolveRole: ResolveRole = .recursive @@ -38,7 +38,7 @@ public extension Inject { /// - qualifier: The registered qualifier. /// - resolveRole: The resolve role. /// - Returns: The resolved instances, or empty. - public static func Inject( + static func Inject( _ type: [T].Type, qualifier: String? = nil, resolveRole: ResolveRole = .default @@ -57,7 +57,7 @@ public extension Inject { /// - argument: User data for resolve. /// - resolveRole: The resolve role(default: recursive) /// - Returns: The resolved instance. - public static func Inject( + static func Inject( _ type: T.Type, with argument: T.RawPayload.Tuple, resolveRole: ResolveRole = .recursive @@ -77,7 +77,7 @@ public extension Inject { /// - argument: User data for resolve. /// - resolveRole: The resolve role. /// - Returns: The resolved instances, or emtpy. - public static func Inject( + static func Inject( _ type: [T].Type, with argument: T.RawPayload.Tuple, resolveRole: ResolveRole = .default @@ -97,7 +97,7 @@ public extension Inject { /// - qualifierBy: The registered qualifier by property. /// - resolveRole: The resolve role(default: recursive) /// - Returns: The resolved instance. - public static func Inject( + static func Inject( _ type: T.Type, qualifierBy: String, resolveRole: ResolveRole = .recursive @@ -113,7 +113,7 @@ public extension Inject { /// - qualifierBy: The registered qualifier by property. /// - resolveRole: The resolve role. /// - Returns: The resolved instances, or empty. - public static func Inject( + static func Inject( _ type: [T].Type, qualifierBy: String, resolveRole: ResolveRole = .default @@ -128,7 +128,7 @@ public extension Inject { /// - path: Property path. /// - resolveRole: The resolve role. /// - Returns: The property. - public static func InjectProperty( + static func InjectProperty( _ path: String, resolveRole: ResolveRole = .default ) -> String { @@ -144,7 +144,7 @@ public extension Inject { /// - qualifier: The registered qualifier. /// - resolveRole: The resolve role(default: recursive) /// - Returns: The resolved instance. - public func Inject( + func Inject( _ type: T.Type, qualifier: String? = nil, resolveRole: ResolveRole = .recursive @@ -163,7 +163,7 @@ public extension Inject { /// - qualifier: The registered qualifier. /// - resolveRole: The resolve role. /// - Returns: The resolved instances, or empty. - public func Inject( + func Inject( _ type: [T].Type, qualifier: String? = nil, resolveRole: ResolveRole = .default @@ -182,7 +182,7 @@ public extension Inject { /// - argument: User data for resolve. /// - resolveRole: The resolve role(default: recursive) /// - Returns: The resolved instance. - public func Inject( + func Inject( _ type: T.Type, with argument: T.RawPayload.Tuple, resolveRole: ResolveRole = .recursive @@ -201,7 +201,7 @@ public extension Inject { /// - argument: User data for resolve. /// - resolveRole: The resolve role. /// - Returns: The resolved instances, or emtpy. - public func Inject( + func Inject( _ type: [T].Type, with argument: T.RawPayload.Tuple, resolveRole: ResolveRole = .default @@ -220,7 +220,7 @@ public extension Inject { /// - qualifierBy: The registered qualifier by property. /// - resolveRole: The resolve role(default: recursive) /// - Returns: The resolved instance. - public func Inject( + func Inject( _ type: T.Type, qualifierBy: String, resolveRole: ResolveRole = .recursive @@ -235,7 +235,7 @@ public extension Inject { /// - qualifierBy: The registered qualifier by property. /// - resolveRole: The resolve role. /// - Returns: The resolved instances, or empty. - public func Inject( + func Inject( _ type: [T].Type, qualifierBy: String, resolveRole: ResolveRole = .default @@ -249,7 +249,7 @@ public extension Inject { /// - path: Property path. /// - resolveRole: The resolve role. /// - Returns: The property. - public func InjectProperty( + func InjectProperty( _ path: String, resolveRole: ResolveRole = .default ) -> String { diff --git a/Tests/DeliTests/DeliSample/DeliFactory.swift b/Tests/DeliTests/DeliSample/DeliFactory.swift index 0a0b8bb..f299b8f 100644 --- a/Tests/DeliTests/DeliSample/DeliFactory.swift +++ b/Tests/DeliTests/DeliSample/DeliFactory.swift @@ -192,6 +192,41 @@ final class DeliFactory: ModuleFactory { qualifier: "", scope: .singleton ) + register( + NestedClass.NestedStruct.self, + resolver: { + return NestedClass.NestedStruct() + }, + qualifier: "", + scope: .singleton + ) + register( + NestedStruct.NestedClass.self, + resolver: { + return NestedStruct.NestedClass() + }, + qualifier: "", + scope: .singleton + ) + register( + NestedStruct.NestedClass.NestedStruct.NestedClass.self, + resolver: { + return NestedStruct.NestedClass.NestedStruct.NestedClass() + }, + qualifier: "", + scope: .singleton + ) + register( + NestedTestClass.self, + resolver: { + let _0 = context.get(NestedClass.NestedStruct.self, qualifier: "")! + let _1 = context.get(NestedStruct.NestedClass.self, qualifier: "")! + let _2 = context.get(NestedStruct.NestedClass.NestedStruct.NestedClass.self, qualifier: "")! + return NestedTestClass(_0, _1, _2) + }, + qualifier: "", + scope: .singleton + ) register( NetworkManagerImpl.self, resolver: { @@ -402,4 +437,4 @@ final class DeliFactory: ModuleFactory { scope: .weak ) } -} \ No newline at end of file +} diff --git a/Tests/DeliTests/DeliSample/NestedType.swift b/Tests/DeliTests/DeliSample/NestedType.swift new file mode 100644 index 0000000..6d04318 --- /dev/null +++ b/Tests/DeliTests/DeliSample/NestedType.swift @@ -0,0 +1,38 @@ +// +// NestedType.swift +// Deli +// +// Created by Kawoou on 2020/01/14. +// + +import Deli + +class NestedClass { + struct NestedStruct: Component { + + } +} + +struct NestedStruct { + class NestedClass: Component { + struct NestedStruct { + class NestedClass: Component { + + } + } + } +} + +class NestedTestClass: Autowired { + typealias NestedType = NestedStruct.NestedClass.NestedStruct.NestedClass + + let a: NestedClass.NestedStruct + let b: NestedStruct.NestedClass + let c: NestedType + + required init(_ a: NestedClass.NestedStruct, _ b: NestedStruct.NestedClass, _ c: NestedType) { + self.a = a + self.b = b + self.c = c + } +} diff --git a/Tests/DeliTests/DeliSpec.swift b/Tests/DeliTests/DeliSpec.swift index 79b0791..7c116ae 100644 --- a/Tests/DeliTests/DeliSpec.swift +++ b/Tests/DeliTests/DeliSpec.swift @@ -1306,6 +1306,16 @@ class DeliSpec: QuickSpec, Inject { } } } + context("when inject nested type") { + var sut: NestedTestClass? + + beforeEach { + sut = appContext.get(NestedTestClass.self) + } + it("sut should be nil") { + expect(sut).toNot(beNil()) + } + } } } }