socket.io-client-swift/SocketGenericParser.swift
2015-09-07 21:29:51 +02:00

52 lines
1.5 KiB
Swift

//
// GenericSocketParser.swift
// Socket.IO-Client-Swift
//
// Created by Lukas Schmidt on 07.09.15.
//
//
import Foundation
struct SocketGenericParser {
let message: String
var currentIndex: Int
var messageCharacters: [Character] {
get {
return Array(message.characters)
}
}
var currentCharacter: String? {
get{
if currentIndex >= messageCharacters.count {
return nil
}
return String(messageCharacters[currentIndex])
}
}
mutating func read(characterLength:Int) -> String? {
let startIndex = message.startIndex.advancedBy(currentIndex)
let range = Range<String.Index>(start: startIndex, end: startIndex.advancedBy(characterLength))
currentIndex = currentIndex + characterLength
return message.substringWithRange(range)
}
mutating func readUntilStringOccurence(string:String) -> String? {
let startIndex = message.startIndex.advancedBy(currentIndex)
let range = Range<String.Index>(start: startIndex, end: message.endIndex)
let subString = message.substringWithRange(range) as NSString
let foundRange = subString.rangeOfString(string)
if foundRange.location == Int.max {
return nil
}
currentIndex = currentIndex + foundRange.location
return subString.substringToIndex(foundRange.location)
}
mutating func readUntilEnd() ->String {
return read(messageCharacters.count - currentIndex)!
}
}