0001 // 0002 // String+Misc.swift 0003 // Swifter 0004 // 0005 // Copyright (c) 2014-2016 Damian KoĊakowski. All rights reserved. 0006 // 0007 0008 #if os(Linux) 0009 import Glibc 0010 #else 0011 import Foundation 0012 #endif 0013 0014 extension String { 0015 0016 public func split(separator: Character) -> [String] { 0017 return self.characters.split { $0 == separator }.map(String.init) 0018 } 0019 0020 public func split
Router.swift:137 for keyValue in queryString.split("&") {(maxSplit: Int = Int.max, separator: Character) -> [String] { 0021 return self.characters.split(maxSplit) { $0 == separator }.map(String.init) 0022 } 0023 0024 public func replace(old: Character, _ new: Character) -> String { 0025 var buffer = [Character]() 0026 self.characters.forEach { buffer.append($0 == old ? new : $0) } 0027 return String(buffer) 0028 } 0029 0030 public func unquote() -> String { 0031 var scalars = self.unicodeScalars; 0032 if scalars.first == "\"" && scalars.last == "\"" && scalars.count >= 2 { 0033 scalars.removeFirst(); 0034 scalars.removeLast(); 0035 return String(scalars) 0036 } 0037 return self 0038 } 0039 0040 public func trim() -> String { 0041 var scalars = self.unicodeScalars 0042 while let _ = scalars.first?.asWhitespace() { scalars.removeFirst() } 0043 while let _ = scalars.last?.asWhitespace() { scalars.removeLast() } 0044 return String(scalars) 0045 } 0046 0047 public static func fromUInt8
Router.swift:138 let tokens = keyValue.split(1, separator: "=")(array: [UInt8]) -> String { 0048 // Apple changes the definition of String(data: .... ) every release so let's stay with 'fromUInt8(...)' wrapper. 0049 return array.reduce("", combine: { $0.0 + String(UnicodeScalar($0.1)) }) 0050 } 0051 0052 public func removePercentEncoding
Extensions.swift:64 output.appendContentsOf(String.fromUInt8(decodeBuffer))Extensions.swift:72 output.appendContentsOf(String.fromUInt8(decodeBuffer))Extensions.swift:79 output.appendContentsOf(String.fromUInt8(decodeBuffer))() -> String { 0053 var scalars = self.unicodeScalars 0054 var output = "" 0055 var decodeBuffer = [UInt8]() 0056 while let scalar = scalars.popFirst() { 0057 if scalar == "%" { 0058 let first = scalars.popFirst() 0059 let secon = scalars.popFirst() 0060 if let first = first?.asAlpha(), secon = secon?.asAlpha() { 0061 decodeBuffer.append(first*16+secon) 0062 } else { 0063 if !decodeBuffer.isEmpty { 0064 output.appendContentsOf(String.fromUInt8(decodeBuffer)) 0065 decodeBuffer.removeAll() 0066 } 0067 if let first = first { output.append(Character(first)) } 0068 if let secon = secon { output.append(Character(secon)) } 0069 } 0070 } else { 0071 if !decodeBuffer.isEmpty { 0072 output.appendContentsOf(String.fromUInt8(decodeBuffer)) 0073 decodeBuffer.removeAll() 0074 } 0075 output.append(Character(scalar)) 0076 } 0077 } 0078 if !decodeBuffer.isEmpty { 0079 output.appendContentsOf(String.fromUInt8(decodeBuffer)) 0080 decodeBuffer.removeAll() 0081 } 0082 return output 0083 } 0084 } 0085 0086 extension UnicodeScalar { 0087 0088 public func asWhitespace
Router.swift:140 params[name.removePercentEncoding()] = value.removePercentEncoding()Router.swift:140 params[name.removePercentEncoding()] = value.removePercentEncoding()() -> UInt8? { 0089 if self.value >= 9 && self.value <= 13 { 0090 return UInt8(self.value) 0091 } 0092 if self.value == 32 { 0093 return UInt8(self.value) 0094 } 0095 return nil 0096 } 0097 0098 public func asAlpha
Extensions.swift:42 while let _ = scalars.first?.asWhitespace() { scalars.removeFirst() }Extensions.swift:43 while let _ = scalars.last?.asWhitespace() { scalars.removeLast() }() -> UInt8? { 0099 if self.value >= 48 && self.value <= 57 { 0100 return UInt8(self.value) - 48 0101 } 0102 if self.value >= 97 && self.value <= 102 { 0103 return UInt8(self.value) - 87 0104 } 0105 if self.value >= 65 && self.value <= 70 { 0106 return UInt8(self.value) - 55 0107 } 0108 return nil 0109 } 0110 } 0111
Extensions.swift:60 if let first = first?.asAlpha(), secon = secon?.asAlpha() {Extensions.swift:60 if let first = first?.asAlpha(), secon = secon?.asAlpha() {