CutBox.app

Coverage Report

Created: 2024-03-12 03:40

.../Source/App/Services/History/HistoryLimitNumberFormatter.swift
Line
Count
Source (jump to first uncovered line)
1
//
2
//  HistoryLimitNumberFormatter.swift
3
//  CutBox
4
//
5
//  Created by Jason Milkins on 15/4/18.
6
//  Copyright © 2018-2023 ocodo. All rights reserved.
7
//
8
9
import Foundation
10
11
class HistoryLimitNumberFormatter: NumberFormatter {
12
13
    override var isPartialStringValidationEnabled: Bool {
14
1
        get {
15
1
            return true
16
1
        }
17
        // swiftlint:disable unused_setter_value
18
1
        set { fatalError("HistoryLimitNumberFormatter().isPartialStringValidationEnabled is not settable") }
19
        // swiftlint:enable unused_setter_value
20
    }
21
22
4
    var intOnlyRegex: NSRegularExpression? {
23
4
        do {
24
4
            return try NSRegularExpression(pattern: "^[0-9]*$",
25
4
                                           options: NSRegularExpression.Options.caseInsensitive)
26
4
        } catch { fatalError("invalid regexp in intOnlyRegex") }
27
0
    }
28
29
    override func isPartialStringValid(_ partialString: String,
30
                                       newEditingString newString: AutoreleasingUnsafeMutablePointer<NSString?>?,
31
                                       errorDescription error: AutoreleasingUnsafeMutablePointer<NSString?>?)
32
3
        -> Bool {
33
3
            return intOnlyRegex?.matches(in: partialString,
34
3
                                         options: .anchored,
35
3
                                         range: NSRange(partialString.startIndex...,
36
3
                                                        in: partialString)).count == 1
37
3
    }
38
}