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
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) {
{ 0013 let argument
Args.swift:34
      parsedFlags[$0.argument.name] = $0.value ?? ""
Argument.swift:17
    self.argument = argument
: Argument 0014 var value
Args.swift:34
      parsedFlags[$0.argument.name] = $0.value ?? ""
ArgsParser.swift:49
    previousOption.value = value
Argument.swift:18
    self.value = value
: String? 0015 0016 init
ArgsParser.swift:32
        options += [Option(argument: argument)]
(argument: Argument, value: String? = nil) { 0017 self.argument = argument 0018 self.value = value 0019 } 0020 } 0021 0022 struct Argument
ArgsParser.swift:14
    var previousArgument: Argument?
ArgsParser.swift:18
      let argument = Argument(argumentString)
Argument.swift:13
  let argument: Argument
Argument.swift:16
  init(argument: Argument, value: String? = nil) {
{ 0023 0024 enum ArgumentType
Argument.swift:52
  let type: ArgumentType
Argument.swift:56
    self.type = ArgumentType(argument)
{ 0025 case ShortFlag
Argument.swift:45
        self = .ShortFlag
Argument.swift:72
    case .ShortFlag:
0026 case LongFlag
Argument.swift:43
        self = .LongFlag
Argument.swift:74
    case .LongFlag:
0027 case NotAFlag
Argument.swift:31
      return self != .NotAFlag
Argument.swift:47
        self = .NotAFlag
Argument.swift:70
    case .NotAFlag:
0028 case FlagsTerminator
Argument.swift:35
      return self == .FlagsTerminator
Argument.swift:41
        self = .FlagsTerminator
Argument.swift:76
    case .FlagsTerminator:
0029 0030 var isFlag
Argument.swift:61
    return type.isFlag
: Bool { 0031 return self != .NotAFlag 0032 } 0033 0034 var isFlagTerminator
Argument.swift:65
    return type.isFlagTerminator
: Bool { 0035 return self == .FlagsTerminator 0036 } 0037 0038 init
Argument.swift:56
    self.type = ArgumentType(argument)
(_ 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)
Argument.swift:61
    return type.isFlag
Argument.swift:65
    return type.isFlagTerminator
Argument.swift:69
    switch type {
: ArgumentType 0053 let argument
Argument.swift:57
    self.argument = argument
Argument.swift:71
      return argument
Argument.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]
: String 0054 0055 init
ArgsParser.swift:18
      let argument = Argument(argumentString)
(_ argument: String) { 0056 self.type = ArgumentType(argument) 0057 self.argument = argument 0058 } 0059 0060 var isFlag
ArgsParser.swift:31
      if argument.isFlag {
ArgsParser.swift:36
      if let previousArgument = previousArgument where previousArgument.isFlag {
: Bool { 0061 return type.isFlag 0062 } 0063 0064 var isFlagTerminator
ArgsParser.swift:26
      if argument.isFlagTerminator {
: Bool { 0065 return type.isFlagTerminator 0066 } 0067 0068 var name
Args.swift:34
      parsedFlags[$0.argument.name] = $0.value ?? ""
ArgsParser.swift:39
        others += [argument.name]
: 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
Argument.swift:73
      return argument[1..<argument.utf8.count]
Argument.swift:75
      return argument[2..<argument.utf8.count]
(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