Skip to content

Commit ecbd1d7

Browse files
committed
clean code
1 parent 0781174 commit ecbd1d7

File tree

5 files changed

+143
-123
lines changed

5 files changed

+143
-123
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
// Part of BeeSwift. Copyright Beeminder
2+
3+
import SwiftyJSON
4+
5+
public class BeeminderDueByEntry: NSObject, NSSecureCoding, Codable {
6+
public let total: Double
7+
public let delta: Double
8+
public let formatted_total_for_beedroid: String
9+
public let formatted_delta_for_beedroid: String
10+
11+
public init(json: JSON) {
12+
self.delta = json["delta"].doubleValue
13+
self.total = json["total"].doubleValue
14+
15+
self.formatted_delta_for_beedroid = json["formatted_delta_for_beedroid"].stringValue
16+
self.formatted_total_for_beedroid = json["formatted_total_for_beedroid"].stringValue
17+
}
18+
19+
init(total: Double, delta: Double, formatted_total_for_beedroid: String, formatted_delta_for_beedroid: String) {
20+
self.total = total
21+
self.delta = delta
22+
self.formatted_total_for_beedroid = formatted_total_for_beedroid
23+
self.formatted_delta_for_beedroid = formatted_delta_for_beedroid
24+
}
25+
26+
public static var supportsSecureCoding: Bool { true }
27+
28+
private enum Key: String {
29+
case total
30+
case delta
31+
case formattedTotalForBeedroid
32+
case formattedDeltaForBeedroid
33+
}
34+
35+
public func encode(with coder: NSCoder) {
36+
coder.encode(total, forKey: Key.total.rawValue)
37+
coder.encode(delta, forKey: Key.delta.rawValue)
38+
coder.encode(formatted_total_for_beedroid, forKey: Key.formattedTotalForBeedroid.rawValue)
39+
coder.encode(formatted_delta_for_beedroid, forKey: Key.formattedDeltaForBeedroid.rawValue)
40+
}
41+
42+
public required convenience init?(coder: NSCoder) {
43+
let total = coder.decodeDouble(forKey: Key.total.rawValue)
44+
let delta = coder.decodeDouble(forKey: Key.delta.rawValue)
45+
46+
guard
47+
let formatted_total_for_beedroid = coder.decodeObject(of: NSString.self, forKey: Key.formattedTotalForBeedroid.rawValue) as? String,
48+
let formatted_delta_for_beedroid = coder.decodeObject(of: NSString.self, forKey: Key.formattedDeltaForBeedroid.rawValue) as? String
49+
else { return nil }
50+
51+
self.init(total: total,
52+
delta: delta,
53+
formatted_total_for_beedroid: formatted_total_for_beedroid,
54+
formatted_delta_for_beedroid: formatted_delta_for_beedroid)
55+
}
56+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// Part of BeeSwift. Copyright Beeminder
2+
3+
import SwiftyJSON
4+
5+
@objc(DueByTable)
6+
public class DueByTable: NSObject, NSSecureCoding, Codable {
7+
/// a dictionary of due by deltas and totals to daystamp strings
8+
public private(set) var entries: [String: BeeminderDueByEntry]
9+
10+
private enum Key: String {
11+
case entries
12+
}
13+
14+
public init(entries: [String: BeeminderDueByEntry]) {
15+
self.entries = entries
16+
}
17+
18+
public static var supportsSecureCoding: Bool { true }
19+
20+
public func encode(with coder: NSCoder) {
21+
coder.encode(entries, forKey: Key.entries.rawValue)
22+
}
23+
24+
public required convenience init?(coder: NSCoder) {
25+
let entries = coder.decodeObject(forKey: Key.entries.rawValue) as? [String: BeeminderDueByEntry] ?? [:]
26+
27+
self.init(entries: entries)
28+
}
29+
30+
convenience init(dueByJson: JSON?) {
31+
var entries: [String : BeeminderDueByEntry] {
32+
dueByJson?.dictionary?.compactMapValues(BeeminderDueByEntry.init)
33+
?? dueByJson?.dictionary?.mapValues(BeeminderDueByEntry.init)
34+
?? [:]
35+
}
36+
self.init(entries: entries)
37+
}
38+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// Part of BeeSwift. Copyright Beeminder
2+
3+
4+
@objc(DueByTableValueTransformer)
5+
public class DueByTableValueTransformer: ValueTransformer {
6+
public override class func transformedValueClass() -> AnyClass {
7+
return NSData.self
8+
}
9+
10+
public override func transformedValue(_ value: Any?) -> Any? {
11+
guard let dueByTable = value as? DueByTable else { return nil }
12+
do {
13+
return try JSONEncoder().encode(dueByTable)
14+
} catch {
15+
print("Error encoding due by table: \(error)")
16+
}
17+
return nil
18+
}
19+
20+
public override func reverseTransformedValue(_ value: Any?) -> Any? {
21+
guard let data = value as? Data else { return nil }
22+
do {
23+
return try JSONDecoder().decode(DueByTable.self, from: data)
24+
} catch {
25+
print("Error decoding due by table: \(error)")
26+
return nil
27+
}
28+
}
29+
30+
}
31+
32+
public extension DueByTableValueTransformer {
33+
public static var name: NSValueTransformerName {
34+
.init(rawValue: String(describing: DueByTableValueTransformer.self))
35+
}
36+
37+
public static func register() {
38+
ValueTransformer.setValueTransformer(DueByTableValueTransformer(),
39+
forName: DueByTableValueTransformer.name)
40+
}
41+
}

BeeKit/Model/Goal.swift

Lines changed: 0 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -191,126 +191,3 @@ public class Goal: NSManagedObject {
191191
lastModifiedLocal = Date()
192192
}
193193
}
194-
195-
@objc(DueByTableValueTransformer)
196-
public class DueByTableValueTransformer: ValueTransformer {
197-
public override class func transformedValueClass() -> AnyClass {
198-
return NSData.self
199-
}
200-
201-
public override func transformedValue(_ value: Any?) -> Any? {
202-
guard let dueByTable = value as? DueByTable else { return nil }
203-
do {
204-
return try JSONEncoder().encode(dueByTable)
205-
} catch {
206-
print("Error encoding due by table: \(error)")
207-
}
208-
return nil
209-
}
210-
211-
public override func reverseTransformedValue(_ value: Any?) -> Any? {
212-
guard let data = (value as? Data) else { return nil }
213-
do {
214-
return try JSONDecoder().decode(DueByTable.self, from: data)
215-
} catch {
216-
print("Error decoding dictionary: \(error)")
217-
return nil
218-
}
219-
}
220-
221-
public static var name: NSValueTransformerName {
222-
.init(rawValue: String(describing: DueByTableValueTransformer.self))
223-
}
224-
225-
public static func register() {
226-
ValueTransformer.setValueTransformer(DueByTableValueTransformer(),
227-
forName: DueByTableValueTransformer.name)
228-
}
229-
}
230-
231-
@objc(DueByTable)
232-
public class DueByTable: NSObject, NSSecureCoding, Codable {
233-
public private(set) var entries: [String: BeeminderDueByEntry]
234-
235-
private enum Key: String {
236-
case entries
237-
}
238-
239-
public init(entries: [String: BeeminderDueByEntry]) {
240-
self.entries = entries
241-
}
242-
243-
public static var supportsSecureCoding: Bool { true }
244-
245-
public func encode(with coder: NSCoder) {
246-
coder.encode(entries, forKey: Key.entries.rawValue)
247-
}
248-
249-
public required convenience init?(coder: NSCoder) {
250-
let entries = coder.decodeObject(forKey: Key.entries.rawValue) as? [String: BeeminderDueByEntry] ?? [:]
251-
252-
self.init(entries: entries)
253-
}
254-
255-
convenience init(dueByJson: JSON?) {
256-
var entries: [String : BeeminderDueByEntry] {
257-
dueByJson?.dictionary?.compactMapValues(BeeminderDueByEntry.init)
258-
?? dueByJson?.dictionary?.mapValues(BeeminderDueByEntry.init)
259-
?? [:]
260-
}
261-
self.init(entries: entries)
262-
}
263-
}
264-
265-
public class BeeminderDueByEntry: NSObject, NSSecureCoding, Codable {
266-
public let total: Double
267-
public let delta: Double
268-
public let formatted_total_for_beedroid: String
269-
public let formatted_delta_for_beedroid: String
270-
271-
public init(json: JSON) {
272-
self.delta = json["delta"].doubleValue
273-
self.total = json["total"].doubleValue
274-
275-
self.formatted_delta_for_beedroid = json["formatted_delta_for_beedroid"].stringValue
276-
self.formatted_total_for_beedroid = json["formatted_total_for_beedroid"].stringValue
277-
}
278-
279-
init(total: Double, delta: Double, formatted_total_for_beedroid: String, formatted_delta_for_beedroid: String) {
280-
self.total = total
281-
self.delta = delta
282-
self.formatted_total_for_beedroid = formatted_total_for_beedroid
283-
self.formatted_delta_for_beedroid = formatted_delta_for_beedroid
284-
}
285-
286-
public static var supportsSecureCoding: Bool { true }
287-
288-
private enum Key: String {
289-
case total
290-
case delta
291-
case formattedTotalForBeedroid
292-
case formattedDeltaForBeedroid
293-
}
294-
295-
public func encode(with coder: NSCoder) {
296-
coder.encode(total, forKey: Key.total.rawValue)
297-
coder.encode(delta, forKey: Key.delta.rawValue)
298-
coder.encode(formatted_total_for_beedroid, forKey: Key.formattedTotalForBeedroid.rawValue)
299-
coder.encode(formatted_delta_for_beedroid, forKey: Key.formattedDeltaForBeedroid.rawValue)
300-
}
301-
302-
public required convenience init?(coder: NSCoder) {
303-
let total = coder.decodeDouble(forKey: Key.total.rawValue)
304-
let delta = coder.decodeDouble(forKey: Key.delta.rawValue)
305-
306-
guard
307-
let formatted_total_for_beedroid = coder.decodeObject(of: NSString.self, forKey: Key.formattedTotalForBeedroid.rawValue) as? String,
308-
let formatted_delta_for_beedroid = coder.decodeObject(of: NSString.self, forKey: Key.formattedDeltaForBeedroid.rawValue) as? String
309-
else { return nil }
310-
311-
self.init(total: total,
312-
delta: delta,
313-
formatted_total_for_beedroid: formatted_total_for_beedroid,
314-
formatted_delta_for_beedroid: formatted_delta_for_beedroid)
315-
}
316-
}

BeeSwift.xcodeproj/project.pbxproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,10 @@
330330
E5FEFB4024E6FAFC00A076BB /* LaunchScreenTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LaunchScreenTests.swift; sourceTree = "<group>"; };
331331
/* End PBXFileReference section */
332332

333+
/* Begin PBXFileSystemSynchronizedRootGroup section */
334+
9BB602A42D3A6D1900756109 /* DueBy */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = DueBy; sourceTree = "<group>"; };
335+
/* End PBXFileSystemSynchronizedRootGroup section */
336+
333337
/* Begin PBXFrameworksBuildPhase section */
334338
A196CB111AE4142E00B90A3E /* Frameworks */ = {
335339
isa = PBXFrameworksBuildPhase;
@@ -557,6 +561,7 @@
557561
E46070F62B3FEFB300305DB4 /* Model */ = {
558562
isa = PBXGroup;
559563
children = (
564+
9BB602A42D3A6D1900756109 /* DueBy */,
560565
E41286EC2A62DF330093D598 /* BeeminderModel.xcdatamodeld */,
561566
E46070F72B3FEFD400305DB4 /* BeeminderPersistentContainer.swift */,
562567
E46070EE2B36A4D900305DB4 /* User.swift */,
@@ -775,6 +780,9 @@
775780
);
776781
dependencies = (
777782
);
783+
fileSystemSynchronizedGroups = (
784+
9BB602A42D3A6D1900756109 /* DueBy */,
785+
);
778786
name = BeeKit;
779787
packageProductDependencies = (
780788
E458C81F2AD11D35000DCA5C /* SwiftyJSON */,

0 commit comments

Comments
 (0)