@@ -60,39 +60,35 @@ class LogProcessor: NSObject, LogProcessorProtocol {
6060 // MARK: Private methods
6161
6262 private func process( text: String ) {
63- let text : NSString = text as NSString
64- let characterSet = CharacterSet ( charactersIn: " \r \" " )
65- var remainingRange = NSMakeRange ( 0 , text. length)
63+ let characterSet = CharacterSet ( charactersIn: " \r " )
64+ var remainingRange = text. startIndex..< text. endIndex
6665
6766 rawMeasures. removeAll ( )
6867
6968 processingDidStart ( )
7069
71- while true {
72- let nextRange = text. rangeOfCharacter ( from: characterSet, options: . literal, range: remainingRange)
73- guard nextRange. location != NSNotFound else { break }
74-
75- let beginIdx = remainingRange. lowerBound
76- let endIdx = nextRange. upperBound
77- let textCount = endIdx - beginIdx
70+ while !shouldCancel, let characterRange = text. rangeOfCharacter ( from: characterSet,
71+ options: . literal,
72+ range: remainingRange) {
73+ let nextRange = remainingRange. lowerBound..< characterRange. upperBound
7874
7975 defer {
80- remainingRange = NSMakeRange ( endIdx , remainingRange. upperBound - endIdx )
76+ remainingRange = nextRange . upperBound ..< remainingRange. upperBound
8177 }
8278
83- let range = NSMakeRange ( beginIdx, textCount)
84- guard let match = regex. firstMatch ( in: text as String , options: [ ] , range: range) else { continue }
85- let timeString = text. substring ( with: NSMakeRange ( beginIdx, match. range. length - 4 ) )
79+ let range = NSRange ( nextRange, in: text)
80+ guard let match = regex. firstMatch ( in: text, options: [ ] , range: range) else { continue }
81+ let matchRange = Range < String . Index > . init ( match. range, in: text) !
82+ let timeString = text [ remainingRange. lowerBound..< text. index ( matchRange. upperBound, offsetBy: - 4 ) ]
8683 if let time = Double ( timeString) {
87- let value = text. substring ( with : NSMakeRange ( match . range . upperBound - 1 , endIdx - match . range . upperBound - 1 ) ) as String
84+ let value = String ( text [ text . index ( before : matchRange . upperBound) ..< nextRange . upperBound] )
8885 if let rawMeasure = rawMeasures [ value] {
8986 rawMeasure. time += time
9087 rawMeasure. references += 1
9188 } else {
9289 rawMeasures [ value] = RawMeasure ( time: time, text: value)
9390 }
9491 }
95- guard !shouldCancel else { break }
9692 }
9793 processingDidFinish ( )
9894 }
0 commit comments