0001 // 0002 // Argument.swift 0003 // Swiftline 0004 // 0005 // Created by Omar Abdelhafith on 26/11/2015. 0006 // Copyright © 2015 Omar Abdelhafith. All rights reserved. 0007 // 0008 0009 import Foundation 0010 0011 0012 struct Option{ 0013 let argument
ArgsParser.swift:11 static func parseFlags(args: [String]) -> ([Option], [String]) {ArgsParser.swift:12 var options = [Option]()ArgsParser.swift:32 options += [Option(argument: argument)]ArgsParser.swift:47 static func updatelastOption(inout forArray array: [Option], withValue value: String) {: Argument 0014 var value
Args.swift:34 parsedFlags[$0.argument.name] = $0.value ?? ""Argument.swift:17 self.argument = argument: String? 0015 0016 init
Args.swift:34 parsedFlags[$0.argument.name] = $0.value ?? ""ArgsParser.swift:49 previousOption.value = valueArgument.swift:18 self.value = value(argument: Argument, value: String? = nil) { 0017 self.argument = argument 0018 self.value = value 0019 } 0020 } 0021 0022 struct Argument
ArgsParser.swift:32 options += [Option(argument: argument)]{ 0023 0024 enum ArgumentType
ArgsParser.swift:14 var previousArgument: Argument?ArgsParser.swift:18 let argument = Argument(argumentString)Argument.swift:13 let argument: ArgumentArgument.swift:16 init(argument: Argument, value: String? = nil) {{ 0025 case ShortFlag
Argument.swift:52 let type: ArgumentTypeArgument.swift:56 self.type = ArgumentType(argument)0026 case LongFlag
Argument.swift:45 self = .ShortFlagArgument.swift:72 case .ShortFlag:0027 case NotAFlag
Argument.swift:43 self = .LongFlagArgument.swift:74 case .LongFlag:0028 case FlagsTerminator
Argument.swift:31 return self != .NotAFlagArgument.swift:47 self = .NotAFlagArgument.swift:70 case .NotAFlag:0029 0030 var isFlag
Argument.swift:35 return self == .FlagsTerminatorArgument.swift:41 self = .FlagsTerminatorArgument.swift:76 case .FlagsTerminator:: Bool { 0031 return self != .NotAFlag 0032 } 0033 0034 var isFlagTerminator
Argument.swift:61 return type.isFlag: Bool { 0035 return self == .FlagsTerminator 0036 } 0037 0038 init
Argument.swift:65 return type.isFlagTerminator(_ argument: String) { 0039 0040 if argument == "--" { 0041 self = .FlagsTerminator 0042 } else if argument.hasPrefix("--") { 0043 self = .LongFlag 0044 } else if argument.hasPrefix("-") { 0045 self = .ShortFlag 0046 } else { 0047 self = .NotAFlag 0048 } 0049 } 0050 } 0051 0052 let type
Argument.swift:56 self.type = ArgumentType(argument): ArgumentType 0053 let argument
Argument.swift:56 self.type = ArgumentType(argument)Argument.swift:61 return type.isFlagArgument.swift:65 return type.isFlagTerminatorArgument.swift:69 switch type {: String 0054 0055 init
Argument.swift:57 self.argument = argumentArgument.swift:71 return argumentArgument.swift:73 return argument[1..<argument.utf8.count]Argument.swift:73 return argument[1..<argument.utf8.count]Argument.swift:75 return argument[2..<argument.utf8.count]Argument.swift:75 return argument[2..<argument.utf8.count](_ argument: String) { 0056 self.type = ArgumentType(argument) 0057 self.argument = argument 0058 } 0059 0060 var isFlag
ArgsParser.swift:18 let argument = Argument(argumentString): Bool { 0061 return type.isFlag 0062 } 0063 0064 var isFlagTerminator
ArgsParser.swift:31 if argument.isFlag {ArgsParser.swift:36 if let previousArgument = previousArgument where previousArgument.isFlag {: Bool { 0065 return type.isFlagTerminator 0066 } 0067 0068 var name
ArgsParser.swift:26 if argument.isFlagTerminator {: String { 0069 switch type { 0070 case .NotAFlag: 0071 return argument 0072 case .ShortFlag: 0073 return argument[1..<argument.utf8.count] 0074 case .LongFlag: 0075 return argument[2..<argument.utf8.count] 0076 case .FlagsTerminator: 0077 return "" 0078 } 0079 } 0080 0081 } 0082 0083 extension String { 0084 public subscript
Args.swift:34 parsedFlags[$0.argument.name] = $0.value ?? ""ArgsParser.swift:39 others += [argument.name](range: Range<Int>) -> String { 0085 let length = self.lengthOfBytesUsingEncoding(NSUTF8StringEncoding) 0086 0087 var distanceFromEndIndex = length - range.endIndex 0088 if distanceFromEndIndex < 0 { 0089 distanceFromEndIndex = 0 0090 } 0091 0092 let actualRange = Range( 0093 start: startIndex.advancedBy(range.startIndex), 0094 end: endIndex.advancedBy(-distanceFromEndIndex)) 0095 0096 return self[actualRange] 0097 } 0098 } 0099
Argument.swift:73 return argument[1..<argument.utf8.count]Argument.swift:75 return argument[2..<argument.utf8.count]