.../Sources/CutBoxCLICore/CutBoxCLICoreHelpers.swift
Line | Count | Source (jump to first uncovered line) |
1 | | // |
2 | | // CutBoxCLICoreHelpers.swift |
3 | | // |
4 | | // Created by jason on 1/9/23. |
5 | | // |
6 | | |
7 | | import Foundation |
8 | | |
9 | 402 | public func regexpMatch(_ string: String, _ pattern: String, caseSensitive: Bool = true) -> Bool { |
10 | 402 | let range = NSRange(location: 0, length: string.utf16.count) |
11 | 402 | if caseSensitive { |
12 | 9 | if let regex = try? NSRegularExpression(pattern: pattern) { |
13 | 5 | return regex.firstMatch(in: string, options: [], range: range) != nil |
14 | 5 | } |
15 | 397 | } else { |
16 | 393 | let regexOptions: NSRegularExpression.Options = [.caseInsensitive] |
17 | 393 | if let regex = try? NSRegularExpression(pattern: pattern, options: regexOptions) { |
18 | 393 | return regex.firstMatch(in: string, options: [], range: range) != nil |
19 | 393 | } |
20 | 4 | } |
21 | 4 | return false |
22 | 397 | } |
23 | | |
24 | 18 | public func iso8601() -> DateFormatter { |
25 | 18 | let dateFormatter = DateFormatter() |
26 | 18 | dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" |
27 | 18 | return dateFormatter |
28 | 18 | } |
29 | | |
30 | 4 | public func loadPlist(path: String) -> [String: Any] { |
31 | 4 | guard let data = FileManager.default.contents(atPath: path), |
32 | 4 | let plist = try? PropertyListSerialization.propertyList( |
33 | 4 | from: data, |
34 | 4 | options: [], |
35 | 4 | format: nil) as? [String: Any] else { |
36 | 1 | fatalError("Cannot read file at \(path)") |
37 | 4 | } |
38 | 4 | return plist |
39 | 4 | } |
40 | | |
41 | | public func savePlist(path: String, |
42 | | plist: [String: Any], |
43 | 1 | format: PropertyListSerialization.PropertyListFormat = .binary) { |
44 | 1 | guard let data = try? PropertyListSerialization.data( |
45 | 1 | fromPropertyList: plist, |
46 | 1 | format: format, |
47 | 1 | options: 0 |
48 | 1 | ) else { |
49 | 0 | fatalError("Cannot convert plist to data") |
50 | 1 | } |
51 | 1 | |
52 | 1 | do { |
53 | 1 | try data.write(to: URL(fileURLWithPath: path)) |
54 | 1 | } catch { |
55 | 0 | fatalError("Failed to write data to file: \(error)") |
56 | 1 | } |
57 | 1 | } |