0001 // 0002 // RawArguments.swift 0003 // Example 0004 // 0005 // Created by Jake Heiser on 1/6/15. 0006 // Copyright (c) 2015 jakeheis. All rights reserved. 0007 // 0008 0009 import Foundation 0010 0011 class RawArguments: CustomStringConvertible { 0012 0013 enum RawArgumentType
CLI.swift:91 return goWithArguments(RawArguments())CLI.swift:105 return goWithArguments(RawArguments(argumentString: argumentString))CLI.swift:108 private class func goWithArguments(arguments: RawArguments) -> CLIResult {CLI.swift:130 class private func routeCommand(arguments arguments: RawArguments) throws -> CommandType {CLI.swift:144 class private func setupOptionsAndArguments(command: CommandType, arguments: RawArguments) throws -> (execute: Bool, arguments: CommandArguments?) {CommandArguments.swift:21 init(rawArguments: RawArguments, signature: CommandSignature) {CommandArguments.swift:27 class func fromRawArguments(rawArguments: RawArguments, signature: CommandSignature) throws -> CommandArguments {CommandArguments.swift:85 private class func handleEmptySignature(rawArguments rawArguments: RawArguments) throws -> CommandArguments {Options.swift:121 func recognizeOptionsInArguments(rawArguments: RawArguments) {Router.swift:25 private let arguments: RawArgumentsRouter.swift:33 init(commands: [CommandType], arguments: RawArguments, defaultCommand: CommandType, config: Config?) {{ 0014 case AppName
RawArguments.swift:22 private var argumentClassifications: [RawArgumentType] = []RawArguments.swift:48 self.argumentClassifications = [RawArgumentType](count: arguments.count, repeatedValue: .Unclassified)RawArguments.swift:53 func classifyArgument(argument argument: String, type: RawArgumentType) {RawArguments.swift:59 private func classifyArgument(index index: Int, type: RawArgumentType) {RawArguments.swift:73 func firstArgumentOfType(type: RawArgumentType) -> String? {0015 case CommandName
RawArguments.swift:50 classifyArgument(index: 0, type: .AppName)0016 case Option
Router.swift:62 arguments.classifyArgument(argument: commandSearchName, type: .CommandName)Router.swift:68 arguments.classifyArgument(argument: commandSearchName, type: .CommandName)0017 case Unclassified
Options.swift:126 rawArguments.classifyArgument(argument: argument, type: .Option)Options.swift:136 rawArguments.classifyArgument(argument: keyValue, type: .Option)0018 } 0019 0020 private var arguments
RawArguments.swift:48 self.argumentClassifications = [RawArgumentType](count: arguments.count, repeatedValue: .Unclassified)RawArguments.swift:66 if self.argumentClassifications[index] == .Unclassified {Router.swift:54 guard let commandSearchName = arguments.firstArgumentOfType(.Unclassified) else {: [String] 0021 0022 private var argumentClassifications
RawArguments.swift:47 self.arguments = argumentsRawArguments.swift:54 if let index = arguments.indexOf(argument) {RawArguments.swift:65 arguments.eachWithIndex {(argument, index) inRawArguments.swift:75 return arguments[index]RawArguments.swift:82 if let index = arguments.indexOf(argument) where index + 1 < arguments.count {RawArguments.swift:82 if let index = arguments.indexOf(argument) where index + 1 < arguments.count {RawArguments.swift:83 return arguments[index + 1]RawArguments.swift:89 return arguments.description: [RawArgumentType] = [] 0023 0024 convenience init
RawArguments.swift:48 self.argumentClassifications = [RawArgumentType](count: arguments.count, repeatedValue: .Unclassified)RawArguments.swift:60 argumentClassifications[index] = typeRawArguments.swift:66 if self.argumentClassifications[index] == .Unclassified {RawArguments.swift:74 if let index = argumentClassifications.indexOf(type) {() { 0025 self.init(arguments: NSProcessInfo.processInfo().arguments) 0026 } 0027 0028 convenience init
CLI.swift:91 return goWithArguments(RawArguments())(argumentString: String) { 0029 let regex = try! NSRegularExpression(pattern: "(\"[^\"]*\")|[^\"\\s]+", options: []) 0030 0031 let argumentMatches = regex.matchesInString(argumentString, options: [], range: NSRange(location: 0, length: argumentString.utf8.count)) 0032 0033 let arguments: [String] = argumentMatches.map {(match) in 0034 let matchRange = match.range 0035 var argument = argumentString.substringFromIndex(argumentString.startIndex.advancedBy(matchRange.location)) 0036 argument = argument.substringToIndex(argument.startIndex.advancedBy(matchRange.length)) 0037 if argument.hasPrefix("\"") { 0038 argument = argument.substringWithRange(Range(start: argument.startIndex.advancedBy(1), end: argument.endIndex.advancedBy(-1))) 0039 } 0040 return argument 0041 } 0042 0043 self.init(arguments: arguments) 0044 } 0045 0046 init
CLI.swift:105 return goWithArguments(RawArguments(argumentString: argumentString))(arguments: [String]) { 0047 self.arguments = arguments 0048 self.argumentClassifications = [RawArgumentType](count: arguments.count, repeatedValue: .Unclassified) 0049 0050 classifyArgument(index: 0, type: .AppName) 0051 } 0052 0053 func classifyArgument
RawArguments.swift:25 self.init(arguments: NSProcessInfo.processInfo().arguments)RawArguments.swift:43 self.init(arguments: arguments)(argument argument: String, type: RawArgumentType) { 0054 if let index = arguments.indexOf(argument) { 0055 classifyArgument(index: index, type: type) 0056 } 0057 } 0058 0059 private func classifyArgument
Options.swift:126 rawArguments.classifyArgument(argument: argument, type: .Option)Options.swift:136 rawArguments.classifyArgument(argument: keyValue, type: .Option)Router.swift:62 arguments.classifyArgument(argument: commandSearchName, type: .CommandName)Router.swift:68 arguments.classifyArgument(argument: commandSearchName, type: .CommandName)(index index: Int, type: RawArgumentType) { 0060 argumentClassifications[index] = type 0061 } 0062 0063 func unclassifiedArguments
RawArguments.swift:50 classifyArgument(index: 0, type: .AppName)RawArguments.swift:55 classifyArgument(index: index, type: type)() -> [String] { 0064 var unclassifiedArguments: [String] = [] 0065 arguments.eachWithIndex {(argument, index) in 0066 if self.argumentClassifications[index] == .Unclassified { 0067 unclassifiedArguments.append(argument) 0068 } 0069 } 0070 return unclassifiedArguments 0071 } 0072 0073 func firstArgumentOfType
CommandArguments.swift:32 let arguments = rawArguments.unclassifiedArguments()CommandArguments.swift:86 guard rawArguments.unclassifiedArguments().count == 0 else {CommandArguments.swift:87 throw CLIError.Error("Expected no arguments, got \(rawArguments.unclassifiedArguments().count).")Options.swift:123 rawArguments.unclassifiedArguments().each {(argument) inRouter.swift:42 guard arguments.unclassifiedArguments().count > 0 else {(type: RawArgumentType) -> String? { 0074 if let index = argumentClassifications.indexOf(type) { 0075 return arguments[index] 0076 } 0077 0078 return nil 0079 } 0080 0081 func argumentFollowingArgument
Router.swift:54 guard let commandSearchName = arguments.firstArgumentOfType(.Unclassified) else {(argument: String) -> String? { 0082 if let index = arguments.indexOf(argument) where index + 1 < arguments.count { 0083 return arguments[index + 1] 0084 } 0085 return nil 0086 } 0087 0088 var description: String { 0089 return arguments.description 0090 } 0091 0092 }
Options.swift:134 if let keyValue = rawArguments.argumentFollowingArgument(option)