From d0b2dfd0b13be0ac72537ba68d8fa615977fd189 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 11 Aug 2022 15:12:14 -0500 Subject: [PATCH] refactored propertywrappers Signed-off-by: Matt Bruce --- VDS.xcodeproj/project.pbxproj | 26 +++++++++++++--- .../AnyProxy.swift} | 0 VDS/PropertyWrappers/Debuggable.swift | 31 +++++++++++++++++++ VDS/PropertyWrappers/UsesAutoLayout.swift | 23 ++++++++++++++ 4 files changed, 75 insertions(+), 5 deletions(-) rename VDS/{Classes/AnyProxy-PropertyWrapper.swift => PropertyWrappers/AnyProxy.swift} (100%) create mode 100644 VDS/PropertyWrappers/Debuggable.swift create mode 100644 VDS/PropertyWrappers/UsesAutoLayout.swift diff --git a/VDS.xcodeproj/project.pbxproj b/VDS.xcodeproj/project.pbxproj index 9f769991..29b77773 100644 --- a/VDS.xcodeproj/project.pbxproj +++ b/VDS.xcodeproj/project.pbxproj @@ -37,11 +37,13 @@ EA3362432892EFF20071C351 /* LabelModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA3362422892EFF20071C351 /* LabelModel.swift */; }; EA3362452892F9130071C351 /* Labelable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA3362442892F9130071C351 /* Labelable.swift */; }; EA33624728931B050071C351 /* Initable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA33624628931B050071C351 /* Initable.swift */; }; - EA3C3B4C2894823E000CA526 /* AnyProxy-PropertyWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA3C3B4B2894823E000CA526 /* AnyProxy-PropertyWrapper.swift */; }; + EA3C3B4C2894823E000CA526 /* AnyProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA3C3B4B2894823E000CA526 /* AnyProxy.swift */; }; EAB1D29428A3ECF700DAE764 /* SelectorGroupBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F13028A17FAB00B287F5 /* SelectorGroupBase.swift */; }; EAB1D29A28A5611D00DAE764 /* SelectorGroupModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB1D29928A5611D00DAE764 /* SelectorGroupModel.swift */; }; EAB1D29C28A5618900DAE764 /* RadioButtonGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB1D29B28A5618900DAE764 /* RadioButtonGroup.swift */; }; EAB1D29E28A5619500DAE764 /* RadioButtonGroupModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB1D29D28A5619500DAE764 /* RadioButtonGroupModel.swift */; }; + EAB1D2A128A598FE00DAE764 /* UsesAutoLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB1D2A028A598FE00DAE764 /* UsesAutoLayout.swift */; }; + EAB1D2A328A5994800DAE764 /* Debuggable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB1D2A228A5994800DAE764 /* Debuggable.swift */; }; EAF7F0952899861000B287F5 /* Checkbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0932899861000B287F5 /* Checkbox.swift */; }; EAF7F0962899861000B287F5 /* CheckboxModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0942899861000B287F5 /* CheckboxModel.swift */; }; EAF7F09A2899B17200B287F5 /* CATransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0992899B17200B287F5 /* CATransaction.swift */; }; @@ -116,10 +118,12 @@ EA3362422892EFF20071C351 /* LabelModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelModel.swift; sourceTree = ""; }; EA3362442892F9130071C351 /* Labelable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Labelable.swift; sourceTree = ""; }; EA33624628931B050071C351 /* Initable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Initable.swift; sourceTree = ""; }; - EA3C3B4B2894823E000CA526 /* AnyProxy-PropertyWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AnyProxy-PropertyWrapper.swift"; sourceTree = ""; }; + EA3C3B4B2894823E000CA526 /* AnyProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnyProxy.swift; sourceTree = ""; }; EAB1D29928A5611D00DAE764 /* SelectorGroupModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectorGroupModel.swift; sourceTree = ""; }; EAB1D29B28A5618900DAE764 /* RadioButtonGroup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioButtonGroup.swift; sourceTree = ""; }; EAB1D29D28A5619500DAE764 /* RadioButtonGroupModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioButtonGroupModel.swift; sourceTree = ""; }; + EAB1D2A028A598FE00DAE764 /* UsesAutoLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UsesAutoLayout.swift; sourceTree = ""; }; + EAB1D2A228A5994800DAE764 /* Debuggable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Debuggable.swift; sourceTree = ""; }; EAF7F0932899861000B287F5 /* Checkbox.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Checkbox.swift; sourceTree = ""; }; EAF7F0942899861000B287F5 /* CheckboxModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CheckboxModel.swift; sourceTree = ""; }; EAF7F0992899B17200B287F5 /* CATransaction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CATransaction.swift; sourceTree = ""; }; @@ -198,8 +202,9 @@ EA3361B4288B2A360071C351 /* Classes */, EA33619D288B1E330071C351 /* Components */, EA3361A6288B23240071C351 /* Extensions */, - EA3361AB288B25EC0071C351 /* Protocols */, EA3361DF2891D0F10071C351 /* Fonts */, + EA3361AB288B25EC0071C351 /* Protocols */, + EAB1D29F28A598D000DAE764 /* PropertyWrappers */, EA3361B9288B2BE30071C351 /* Utilities */, EA3361FE2891E14C0071C351 /* SupportingFiles */, EA336170288B19200071C351 /* VDS.docc */, @@ -289,7 +294,6 @@ EA3361B4288B2A360071C351 /* Classes */ = { isa = PBXGroup; children = ( - EA3C3B4B2894823E000CA526 /* AnyProxy-PropertyWrapper.swift */, EAF7F0B8289C139800B287F5 /* ColorConfiguration.swift */, EAF7F09D289AAEC000B287F5 /* Constants.swift */, EA3361B5288B2A410071C351 /* Control.swift */, @@ -345,6 +349,16 @@ path = Label; sourceTree = ""; }; + EAB1D29F28A598D000DAE764 /* PropertyWrappers */ = { + isa = PBXGroup; + children = ( + EA3C3B4B2894823E000CA526 /* AnyProxy.swift */, + EAB1D2A028A598FE00DAE764 /* UsesAutoLayout.swift */, + EAB1D2A228A5994800DAE764 /* Debuggable.swift */, + ); + path = PropertyWrappers; + sourceTree = ""; + }; EAF7F092289985E200B287F5 /* Checkbox */ = { isa = PBXGroup; children = ( @@ -519,6 +533,7 @@ EA3361C5289030FC0071C351 /* Accessable.swift in Sources */, EA33622C2891E73B0071C351 /* FontProtocol.swift in Sources */, EAF7F11728A1475A00B287F5 /* RadioButton.swift in Sources */, + EAB1D2A128A598FE00DAE764 /* UsesAutoLayout.swift in Sources */, EAF7F0952899861000B287F5 /* Checkbox.swift in Sources */, EA3361C9289054C50071C351 /* Surfaceable.swift in Sources */, EA3361A2288B1E840071C351 /* ToggleModel.swift in Sources */, @@ -532,7 +547,7 @@ EAF7F09A2899B17200B287F5 /* CATransaction.swift in Sources */, EAB1D29E28A5619500DAE764 /* RadioButtonGroupModel.swift in Sources */, EAF7F0A2289AFB3900B287F5 /* Errorable.swift in Sources */, - EA3C3B4C2894823E000CA526 /* AnyProxy-PropertyWrapper.swift in Sources */, + EA3C3B4C2894823E000CA526 /* AnyProxy.swift in Sources */, EA3361AF288B26310071C351 /* FormFieldable.swift in Sources */, EAB1D29A28A5611D00DAE764 /* SelectorGroupModel.swift in Sources */, EAF7F0A8289B119400B287F5 /* Fontable.swift in Sources */, @@ -545,6 +560,7 @@ EAF7F0962899861000B287F5 /* CheckboxModel.swift in Sources */, EA3361AA288B25E40071C351 /* Disabling.swift in Sources */, EA3361B6288B2A410071C351 /* Control.swift in Sources */, + EAB1D2A328A5994800DAE764 /* Debuggable.swift in Sources */, EAF7F0B7289C12A600B287F5 /* UITapGestureRecognizer.swift in Sources */, EA3362452892F9130071C351 /* Labelable.swift in Sources */, EA3361AD288B26190071C351 /* DataTrackable.swift in Sources */, diff --git a/VDS/Classes/AnyProxy-PropertyWrapper.swift b/VDS/PropertyWrappers/AnyProxy.swift similarity index 100% rename from VDS/Classes/AnyProxy-PropertyWrapper.swift rename to VDS/PropertyWrappers/AnyProxy.swift diff --git a/VDS/PropertyWrappers/Debuggable.swift b/VDS/PropertyWrappers/Debuggable.swift new file mode 100644 index 00000000..822f6182 --- /dev/null +++ b/VDS/PropertyWrappers/Debuggable.swift @@ -0,0 +1,31 @@ +// +// File.swift +// VDS +// +// Created by Matt Bruce on 8/11/22. +// + +import Foundation + +@propertyWrapper +public struct Debuggable { + private var value: Value + private let description: String + + public init(wrappedValue: Value, description: String = "") { + print("Initialized '\(description)' with value \(wrappedValue)") + self.value = wrappedValue + self.description = description + } + + public var wrappedValue: Value { + get { + print("Accessing '\(description)', returning: \(value)") + return value + } + set { + print("Updating '\(description)', newValue: \(newValue)") + value = newValue + } + } +} diff --git a/VDS/PropertyWrappers/UsesAutoLayout.swift b/VDS/PropertyWrappers/UsesAutoLayout.swift new file mode 100644 index 00000000..4556a291 --- /dev/null +++ b/VDS/PropertyWrappers/UsesAutoLayout.swift @@ -0,0 +1,23 @@ +// +// UseAutoLayout.swift +// VDS +// +// Created by Matt Bruce on 8/11/22. +// + +import Foundation +import UIKit + +@propertyWrapper +public struct UsesAutoLayout { + public var wrappedValue: T { + didSet { + wrappedValue.translatesAutoresizingMaskIntoConstraints = false + } + } + + public init(wrappedValue: T) { + self.wrappedValue = wrappedValue + wrappedValue.translatesAutoresizingMaskIntoConstraints = false + } +}