Skip to content

Commit

Permalink
fix: moved findAndCrop to non mutation function (#1700)
Browse files Browse the repository at this point in the history
  • Loading branch information
exelban committed Dec 6, 2023
1 parent 754f220 commit de5b369
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 40 deletions.
29 changes: 13 additions & 16 deletions Kit/extensions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -36,27 +36,24 @@ extension String: LocalizedError {
return components.filter { !$0.isEmpty }.joined(separator: " ")
}

public mutating func findAndCrop(pattern: String) -> String {
public func findAndCrop(pattern: String) -> (cropped: String, remain: String) {
do {
let regex = try NSRegularExpression(pattern: pattern)
let stringRange = NSRange(location: 0, length: self.utf16.count)
var line = self
let range = NSRange(self.startIndex..., in: self)

if let searchRange = regex.firstMatch(in: self, options: [], range: stringRange) {
let start = self.index(self.startIndex, offsetBy: searchRange.range.lowerBound)
let end = self.index(self.startIndex, offsetBy: searchRange.range.upperBound)
let value = String(self[start..<end]).trimmingCharacters(in: .whitespaces)
line = self.replacingOccurrences(
of: value,
with: "",
options: .regularExpression
)
self = line.trimmingCharacters(in: .whitespaces)
return value.trimmingCharacters(in: .whitespaces)
if let match = regex.firstMatch(in: self, options: [], range: range) {
let matchRange = Range(match.range, in: self)
if let range = matchRange {
let croppedString = String(self[range])
let remainingString = String(self[range.upperBound...])
return (croppedString.trimmingCharacters(in: .whitespaces), remainingString.trimmingCharacters(in: .whitespaces))
}
}
} catch {}
} catch {
print("Error creating regex: \(error.localizedDescription)")
}

return ""
return ("", self)
}

public func find(pattern: String) -> String {
Expand Down
14 changes: 6 additions & 8 deletions Modules/Battery/readers.swift
Original file line number Diff line number Diff line change
Expand Up @@ -191,14 +191,12 @@ public class ProcessReader: Reader<[TopProcess]> {
var processes: [TopProcess] = []
output.enumerateLines { (line, _) -> Void in

Check warning on line 192 in Modules/Battery/readers.swift

View workflow job for this annotation

GitHub Actions / SwiftLint

Redundant Void Return Violation: Returning Void in a function declaration is redundant (redundant_void_return)
if line.matches("^\\d+ *[^(\\d)]*\\d+\\.*\\d* *$") {
var str = line.trimmingCharacters(in: .whitespaces)

let pidString = str.findAndCrop(pattern: "^\\d+")
let usageString = str.findAndCrop(pattern: " +[0-9]+.*[0-9]*$")
let command = str.trimmingCharacters(in: .whitespaces)

let pid = Int(pidString) ?? 0
guard let usage = Double(usageString.filter("01234567890.".contains)) else {
let str = line.trimmingCharacters(in: .whitespaces)
let pidFind = str.findAndCrop(pattern: "^\\d+")
let usageFind = pidFind.remain.findAndCrop(pattern: " +[0-9]+.*[0-9]*$")
let command = usageFind.remain.trimmingCharacters(in: .whitespaces)
let pid = Int(pidFind.cropped) ?? 0
guard let usage = Double(usageFind.cropped.filter("01234567890.".contains)) else {
return
}

Expand Down
18 changes: 9 additions & 9 deletions Modules/CPU/readers.swift
Original file line number Diff line number Diff line change
Expand Up @@ -223,13 +223,12 @@ public class ProcessReader: Reader<[TopProcess]> {
var processes: [TopProcess] = []
output.enumerateLines { (line, stop) -> Void in

Check warning on line 224 in Modules/CPU/readers.swift

View workflow job for this annotation

GitHub Actions / SwiftLint

Redundant Void Return Violation: Returning Void in a function declaration is redundant (redundant_void_return)
if index != 0 {
var str = line.trimmingCharacters(in: .whitespaces)
let pidString = str.findAndCrop(pattern: "^\\d+")
let usageString = str.findAndCrop(pattern: "^[0-9,.]+ ")
let command = str.trimmingCharacters(in: .whitespaces)

let pid = Int(pidString) ?? 0
let usage = Double(usageString.replacingOccurrences(of: ",", with: ".")) ?? 0
let str = line.trimmingCharacters(in: .whitespaces)
let pidFind = str.findAndCrop(pattern: "^\\d+")
let usageFind = pidFind.remain.findAndCrop(pattern: "^[0-9,.]+ ")
let command = usageFind.remain.trimmingCharacters(in: .whitespaces)
let pid = Int(pidFind.cropped) ?? 0
let usage = Double(usageFind.cropped.replacingOccurrences(of: ",", with: ".")) ?? 0

var name: String? = nil
if let app = NSRunningApplication(processIdentifier: pid_t(pid) ) {
Expand Down Expand Up @@ -525,8 +524,9 @@ public class AverageReader: Reader<[Double]> {
return
}

var str = line.trimmingCharacters(in: .whitespaces)
let strArr = str.findAndCrop(pattern: "(\\d+(.|,)\\d+ *){3}$").split(separator: " ")
let str = line.trimmingCharacters(in: .whitespaces)
let strFind = str.findAndCrop(pattern: "(\\d+(.|,)\\d+ *){3}$")
let strArr = strFind.cropped.split(separator: " ")
guard strArr.count == 3 else {
return
}
Expand Down
11 changes: 4 additions & 7 deletions Modules/Disk/readers.swift
Original file line number Diff line number Diff line change
Expand Up @@ -383,13 +383,10 @@ public class ProcessReader: Reader<[Disk_process]> {

var processes: [Disk_process] = []
output.enumerateLines { (line, _) -> Void in

Check warning on line 385 in Modules/Disk/readers.swift

View workflow job for this annotation

GitHub Actions / SwiftLint

Redundant Void Return Violation: Returning Void in a function declaration is redundant (redundant_void_return)
var str = line.trimmingCharacters(in: .whitespaces)
let pidString = str.findAndCrop(pattern: "^\\d+")
if let range = str.range(of: pidString) {
str = str.replacingCharacters(in: range, with: "")
}
let name = str.findAndCrop(pattern: "^[^ ]+")
guard let pid = Int32(pidString) else { return }
let str = line.trimmingCharacters(in: .whitespaces)
let pidFind = str.findAndCrop(pattern: "^\\d+")
guard let pid = Int32(pidFind.cropped) else { return }
let name = pidFind.remain.findAndCrop(pattern: "^[^ ]+").cropped

var usage = rusage_info_current()
let result = withUnsafeMutablePointer(to: &usage) {
Expand Down

0 comments on commit de5b369

Please sign in to comment.