// // KMDataVersionManager.swift // PDF Reader Pro // // Created by liujiajie on 2023/11/7. // import Foundation let KMHeaderFooterManagerVersion = "KMHeaderFooterManagerVersion" class KMDataVersionManager: NSObject{ class func updateBatesData() -> Bool { var defaults = UserDefaults.standard if (defaults.object(forKey: KMHeaderFooterManagerVersion) != nil) { defaults.setValue("1", forKey: KMHeaderFooterManagerVersion) return true } return false } class func refrshBatesData(bates: KMHeaderFooterObject?) -> KMHeaderFooterObject? { if bates == nil { return nil } var str: String if bates?.batesDigits ?? 0 > 0 { str = String(format: "%@<<%@,%ld>>%@", bates!.batesPrefixString, bates!.startString, bates!.batesDigits, bates!.batesSuffixString) } else { str = String(format: "%@<<%@>>%@", bates!.batesPrefixString, bates!.startString, bates!.batesSuffixString) } bates!.topLeftString = KMDataVersionManager.newBateString(oldString: bates!.topLeftString, bates: bates!, match: str) bates!.topCenterString = KMDataVersionManager.newBateString(oldString: bates!.topCenterString, bates: bates!, match: str) bates!.topRightString = KMDataVersionManager.newBateString(oldString: bates!.topRightString, bates: bates!, match: str) bates!.bottomLeftString = KMDataVersionManager.newBateString(oldString: bates!.bottomLeftString, bates: bates!, match: str) bates!.bottomCenterString = KMDataVersionManager.newBateString(oldString: bates!.bottomCenterString, bates: bates!, match: str) bates!.bottomRightString = KMDataVersionManager.newBateString(oldString: bates!.bottomRightString, bates: bates!, match: str) return bates } class func newBateString(oldString: String, bates: KMHeaderFooterObject, match: String) -> String { let regex = try! NSRegularExpression(pattern: match, options: []) let results = regex.matches(in: oldString, options: [], range: NSRange(location: 0, length: oldString.count)) var newString = oldString for object in results { let range = object.range var tString: String if bates.batesDigits > 0 { tString = "<<#(bates.batesDigits)#(bates.startString)" } else { tString = "<<#(bates.startString)" } if bates.batesPrefixString.count > 0 { tString += "#\(bates.batesPrefixString)" } else if bates.batesPrefixString.count < 1 && bates.batesSuffixString.count > 0 { tString += "#" } if bates.batesSuffixString.count > 0 { tString += "#\(bates.batesSuffixString)" } tString += ">>" let resultStr = (oldString as NSString).substring(with: range) newString = newString.replacingOccurrences(of: resultStr, with: tString) } return newString } }