0001    //
0002    //  CommandSignature.swift
0003    //  Pods
0004    //
0005    //  Created by Jake Heiser on 3/9/15.
0006    //
0007    //
0008    
0009    import Foundation
0010    
0011    class CommandSignature
CLI.swift:165
        let commandSignature = CommandSignature(command.commandSignature)
CommandArguments.swift:21
    init(rawArguments: RawArguments, signature: CommandSignature) {
CommandArguments.swift:27
    class func fromRawArguments(rawArguments: RawArguments, signature: CommandSignature) throws -> CommandArguments {
{ 0012 0013 var requiredParameters
CommandArguments.swift:34
        if arguments.count < signature.requiredParameters.count {
CommandArguments.swift:35
            throw CLIError.Error(errorMessage(expectedCount: signature.requiredParameters.count, givenCount: arguments.count))
CommandArguments.swift:38
        if !signature.collectRemainingArguments && signature.optionalParameters.isEmpty && arguments.count != signature.requiredParameters.count {
CommandArguments.swift:39
            throw CLIError.Error(errorMessage(expectedCount: signature.requiredParameters.count, givenCount: arguments.count))
CommandArguments.swift:42
        if !signature.collectRemainingArguments && arguments.count > signature.requiredParameters.count + signature.optionalParameters.count {
CommandArguments.swift:43
            throw CLIError.Error(errorMessage(expectedCount: signature.requiredParameters.count + signature.optionalParameters.count, givenCount: arguments.count))
CommandArguments.swift:49
        for i in 0..<signature.requiredParameters.count {
CommandArguments.swift:50
            let parameter = signature.requiredParameters[i]
CommandArguments.swift:56
        if !signature.optionalParameters.isEmpty && arguments.count > signature.requiredParameters.count {
CommandArguments.swift:58
                let index = i + signature.requiredParameters.count
CommandArguments.swift:70
            let parameter = signature.optionalParameters.isEmpty ? signature.requiredParameters[signature.requiredParameters.count-1] : signature.optionalParameters[signature.optionalParameters.count-1]
CommandArguments.swift:70
            let parameter = signature.optionalParameters.isEmpty ? signature.requiredParameters[signature.requiredParameters.count-1] : signature.optionalParameters[signature.optionalParameters.count-1]
CommandArguments.swift:74
            let startingIndex = signature.requiredParameters.count + signature.optionalParameters.count
CommandSignature.swift:44
        requiredParameters.append(parameter)
CommandSignature.swift:52
        return requiredParameters.isEmpty && optionalParameters.isEmpty
: [String] = [] 0014 var optionalParameters
CommandArguments.swift:38
        if !signature.collectRemainingArguments && signature.optionalParameters.isEmpty && arguments.count != signature.requiredParameters.count {
CommandArguments.swift:42
        if !signature.collectRemainingArguments && arguments.count > signature.requiredParameters.count + signature.optionalParameters.count {
CommandArguments.swift:43
            throw CLIError.Error(errorMessage(expectedCount: signature.requiredParameters.count + signature.optionalParameters.count, givenCount: arguments.count))
CommandArguments.swift:56
        if !signature.optionalParameters.isEmpty && arguments.count > signature.requiredParameters.count {
CommandArguments.swift:57
            for i in 0..<signature.optionalParameters.count {
CommandArguments.swift:62
                let parameter = signature.optionalParameters[i]
CommandArguments.swift:70
            let parameter = signature.optionalParameters.isEmpty ? signature.requiredParameters[signature.requiredParameters.count-1] : signature.optionalParameters[signature.optionalParameters.count-1]
CommandArguments.swift:70
            let parameter = signature.optionalParameters.isEmpty ? signature.requiredParameters[signature.requiredParameters.count-1] : signature.optionalParameters[signature.optionalParameters.count-1]
CommandArguments.swift:70
            let parameter = signature.optionalParameters.isEmpty ? signature.requiredParameters[signature.requiredParameters.count-1] : signature.optionalParameters[signature.optionalParameters.count-1]
CommandArguments.swift:74
            let startingIndex = signature.requiredParameters.count + signature.optionalParameters.count
CommandSignature.swift:33
                assert(optionalParameters.count == 0, "All required parameters must come before any optional parameter.")
CommandSignature.swift:48
        optionalParameters.append(parameter)
CommandSignature.swift:52
        return requiredParameters.isEmpty && optionalParameters.isEmpty
: [String] = [] 0015 var collectRemainingArguments
CommandArguments.swift:38
        if !signature.collectRemainingArguments && signature.optionalParameters.isEmpty && arguments.count != signature.requiredParameters.count {
CommandArguments.swift:42
        if !signature.collectRemainingArguments && arguments.count > signature.requiredParameters.count + signature.optionalParameters.count {
CommandArguments.swift:69
        if signature.collectRemainingArguments {
CommandSignature.swift:26
                collectRemainingArguments = true
= false 0016 0017 init
CLI.swift:165
        let commandSignature = CommandSignature(command.commandSignature)
(_ string: String) { 0018 let parameters = string.componentsSeparatedByString(" ").filter { !$0.isEmpty } 0019 0020 let requiredRegex = try! NSRegularExpression(pattern: "^<.*>$", options: []) 0021 let optionalRegex = try! NSRegularExpression(pattern: "^\\[<.*>\\]$", options: []) 0022 0023 for parameter in parameters { 0024 if parameter == "..." { 0025 assert(parameter == parameters.last, "The collection operator (...) must come at the end of a command signature.") 0026 collectRemainingArguments = true 0027 continue 0028 } 0029 0030 let parameterRange = NSRange(location: 0, length: parameter.characters.count) 0031 0032 if requiredRegex.numberOfMatchesInString(parameter, options: [], range: parameterRange) > 0 { 0033 assert(optionalParameters.count == 0, "All required parameters must come before any optional parameter.") 0034 required(parameter.trimEndsByLength(1)) 0035 } else if optionalRegex.numberOfMatchesInString(parameter, options: [], range: parameterRange) > 0 { 0036 optional(parameter.trimEndsByLength(2)) 0037 } else { 0038 assert(false, "Unrecognized parameter format: \(parameter)") 0039 } 0040 } 0041 } 0042 0043 func required
CommandSignature.swift:34
                required(parameter.trimEndsByLength(1))
(parameter: String) { 0044 requiredParameters.append(parameter) 0045 } 0046 0047 func optional
CommandSignature.swift:36
                optional(parameter.trimEndsByLength(2))
(parameter: String) { 0048 optionalParameters.append(parameter) 0049 } 0050 0051 var isEmpty
CommandArguments.swift:28
        if signature.isEmpty {
: Bool { 0052 return requiredParameters.isEmpty && optionalParameters.isEmpty 0053 } 0054 0055 } 0056