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
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: RawArguments
Router.swift:33
    init(commands: [CommandType], arguments: RawArguments, defaultCommand: CommandType, config: Config?) {
: CustomStringConvertible { 0012 0013 enum RawArgumentType
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? {
{ 0014 case AppName
RawArguments.swift:50
        classifyArgument(index: 0, type: .AppName)
0015 case CommandName
Router.swift:62
                arguments.classifyArgument(argument: commandSearchName, type: .CommandName)
Router.swift:68
            arguments.classifyArgument(argument: commandSearchName, type: .CommandName)
0016 case Option
Options.swift:126
                rawArguments.classifyArgument(argument: argument, type: .Option)
Options.swift:136
                        rawArguments.classifyArgument(argument: keyValue, type: .Option)
0017 case Unclassified
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 {
0018 } 0019 0020 private var arguments
RawArguments.swift:47
        self.arguments = arguments
RawArguments.swift:54
        if let index = arguments.indexOf(argument) {
RawArguments.swift:65
        arguments.eachWithIndex {(argument, index) in
RawArguments.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
: [String] 0021 0022 private var argumentClassifications
RawArguments.swift:48
        self.argumentClassifications = [RawArgumentType](count: arguments.count, repeatedValue: .Unclassified)
RawArguments.swift:60
        argumentClassifications[index] = type
RawArguments.swift:66
            if self.argumentClassifications[index] == .Unclassified {
RawArguments.swift:74
        if let index = argumentClassifications.indexOf(type) {
: [RawArgumentType] = [] 0023 0024 convenience init
CLI.swift:91
       return goWithArguments(RawArguments())
() { 0025 self.init(arguments: NSProcessInfo.processInfo().arguments) 0026 } 0027 0028 convenience init
CLI.swift:105
        return goWithArguments(RawArguments(argumentString: argumentString))
(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
RawArguments.swift:25
        self.init(arguments: NSProcessInfo.processInfo().arguments)
RawArguments.swift:43
        self.init(arguments: arguments)
(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
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)
(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
RawArguments.swift:50
        classifyArgument(index: 0, type: .AppName)
RawArguments.swift:55
            classifyArgument(index: index, type: type)
(index index: Int, type: RawArgumentType) { 0060 argumentClassifications[index] = type 0061 } 0062 0063 func unclassifiedArguments
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) in
Router.swift:42
        guard arguments.unclassifiedArguments().count > 0 else {
() -> [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
Router.swift:54
        guard let commandSearchName = arguments.firstArgumentOfType(.Unclassified) 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
Options.swift:134
                if let keyValue = rawArguments.argumentFollowingArgument(option)
(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 }