Skip to content

Commit 535e279

Browse files
Add ObservedObject macro if store_prefix (#863)
* Add ObservedObject macro if store_prefix * Add store_property_wrapper
1 parent b9eb0b3 commit 535e279

File tree

36 files changed

+88
-20
lines changed

36 files changed

+88
-20
lines changed

Sources/NodesGenerator/Config.swift

+1
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ public struct Config: Codable, Equatable {
6161
public var isPeripheryCommentEnabled: Bool
6262

6363
public var storePrefix: String { isObservableStoreEnabled ? "Observable" : "" }
64+
public var storePropertyWrapper: String { isObservableStoreEnabled ? "@ObservedObject" : "" }
6465
public var isNimbleEnabled: Bool { baseTestImports.contains("Nimble") }
6566

6667
public init(

Sources/NodesGenerator/PresetGenerator.swift

+1
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ public final class PresetGenerator {
9494
contextGenericTypes: config.contextGenericTypes,
9595
workerGenericTypes: config.workerGenericTypes,
9696
storePrefix: config.storePrefix,
97+
storePropertyWrapper: config.storePropertyWrapper,
9798
isPreviewProviderEnabled: config.isPreviewProviderEnabled,
9899
isPeripheryCommentEnabled: config.isPeripheryCommentEnabled,
99100
isNimbleEnabled: config.isNimbleEnabled

Sources/NodesGenerator/Resources/Stencils/ViewController-SwiftUI.stencil

+6-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,12 @@ internal struct {{ node_name }}View {
5252
internal weak var receiver: {{ node_name }}Receiver?
5353

5454
/// The Store instance.
55-
private let store: Any{{ store_prefix }}ViewStateStore<{{ node_name }}ViewState>
55+
{% if store_property_wrapper %}
56+
{{ store_property_wrapper }}
57+
private var store: Any{{ store_prefix }}ViewStateStore<{{ node_name }}ViewState>
58+
{% else %}
59+
private let store: AnyViewStateStore<{{ node_name }}ViewState>
60+
{% endif %}
5661

5762
/// The initializer.
5863
///

Sources/NodesGenerator/StencilContexts/NodeStencilContext.swift

+13
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
// Copyright © 2021 Tinder (Match Group, LLC)
33
//
44

5+
// swiftlint:disable file_length
6+
57
// swiftlint:disable:next type_body_length
68
public struct NodeStencilContext: StencilContext {
79

@@ -47,6 +49,7 @@ public struct NodeStencilContext: StencilContext {
4749
private let contextGenericTypes: [String]
4850
private let workerGenericTypes: [String]
4951
private let storePrefix: String
52+
private let storePropertyWrapper: String
5053
private let isPreviewProviderEnabled: Bool
5154
private let isPeripheryCommentEnabled: Bool
5255
private let isNimbleEnabled: Bool
@@ -96,6 +99,7 @@ public struct NodeStencilContext: StencilContext {
9699
"context_generic_types": contextGenericTypes,
97100
"worker_generic_types": workerGenericTypes,
98101
"store_prefix": storePrefix,
102+
"store_property_wrapper": storePropertyWrapper,
99103
"is_preview_provider_enabled": isPreviewProviderEnabled,
100104
"is_periphery_comment_enabled": isPeripheryCommentEnabled,
101105
"is_nimble_enabled": isNimbleEnabled
@@ -146,6 +150,7 @@ public struct NodeStencilContext: StencilContext {
146150
contextGenericTypes: [String],
147151
workerGenericTypes: [String],
148152
storePrefix: String,
153+
storePropertyWrapper: String,
149154
isPreviewProviderEnabled: Bool,
150155
isPeripheryCommentEnabled: Bool,
151156
isNimbleEnabled: Bool
@@ -194,12 +199,14 @@ public struct NodeStencilContext: StencilContext {
194199
contextGenericTypes: contextGenericTypes,
195200
workerGenericTypes: workerGenericTypes,
196201
storePrefix: storePrefix,
202+
storePropertyWrapper: storePropertyWrapper,
197203
isPreviewProviderEnabled: isPreviewProviderEnabled,
198204
isPeripheryCommentEnabled: isPeripheryCommentEnabled,
199205
isNimbleEnabled: isNimbleEnabled
200206
)
201207
}
202208

209+
// swiftlint:disable:next function_body_length
203210
public init(
204211
preset: Preset,
205212
fileHeader: String,
@@ -238,6 +245,7 @@ public struct NodeStencilContext: StencilContext {
238245
contextGenericTypes: [String],
239246
workerGenericTypes: [String],
240247
storePrefix: String,
248+
storePropertyWrapper: String,
241249
isPreviewProviderEnabled: Bool,
242250
isPeripheryCommentEnabled: Bool,
243251
isNimbleEnabled: Bool
@@ -288,6 +296,7 @@ public struct NodeStencilContext: StencilContext {
288296
contextGenericTypes: contextGenericTypes,
289297
workerGenericTypes: workerGenericTypes,
290298
storePrefix: storePrefix,
299+
storePropertyWrapper: storePropertyWrapper,
291300
isPreviewProviderEnabled: isPreviewProviderEnabled,
292301
isPeripheryCommentEnabled: isPeripheryCommentEnabled,
293302
isNimbleEnabled: isNimbleEnabled
@@ -338,6 +347,7 @@ public struct NodeStencilContext: StencilContext {
338347
contextGenericTypes: [String],
339348
workerGenericTypes: [String],
340349
storePrefix: String,
350+
storePropertyWrapper: String,
341351
isPreviewProviderEnabled: Bool,
342352
isPeripheryCommentEnabled: Bool,
343353
isNimbleEnabled: Bool
@@ -386,8 +396,11 @@ public struct NodeStencilContext: StencilContext {
386396
self.contextGenericTypes = contextGenericTypes
387397
self.workerGenericTypes = workerGenericTypes
388398
self.storePrefix = storePrefix
399+
self.storePropertyWrapper = storePropertyWrapper
389400
self.isPreviewProviderEnabled = isPreviewProviderEnabled
390401
self.isPeripheryCommentEnabled = isPeripheryCommentEnabled
391402
self.isNimbleEnabled = isNimbleEnabled
392403
}
393404
}
405+
406+
// swiftlint:enable file_length

Sources/NodesGenerator/XcodeTemplatePermutations/NodeXcodeTemplatePermutation.swift

+1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ internal struct NodeXcodeTemplatePermutation: XcodeTemplatePermutation {
5858
contextGenericTypes: config.contextGenericTypes,
5959
workerGenericTypes: config.workerGenericTypes,
6060
storePrefix: config.storePrefix,
61+
storePropertyWrapper: config.storePropertyWrapper,
6162
isPreviewProviderEnabled: config.isPreviewProviderEnabled,
6263
isPeripheryCommentEnabled: config.isPeripheryCommentEnabled,
6364
isNimbleEnabled: config.isNimbleEnabled

Tests/NodesGeneratorTests/Support/TestFactories.swift

+2
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ extension TestFactories {
105105
contextGenericTypes: .mock(with: "contextGenericType", count: mockCount),
106106
workerGenericTypes: .mock(with: "workerGenericType", count: mockCount),
107107
storePrefix: mockCount > 0 ? "<storePrefix>" : "",
108+
storePropertyWrapper: mockCount > 0 ? "<storePropertyWrapper>" : "",
108109
isPreviewProviderEnabled: mockCount > 0,
109110
isPeripheryCommentEnabled: mockCount > 0,
110111
isNimbleEnabled: mockCount > 0
@@ -153,6 +154,7 @@ extension TestFactories {
153154
contextGenericTypes: .mock(with: "contextGenericType", count: mockCount),
154155
workerGenericTypes: .mock(with: "workerGenericType", count: mockCount),
155156
storePrefix: mockCount > 0 ? "<storePrefix>" : "",
157+
storePropertyWrapper: mockCount > 0 ? "<storePropertyWrapper>" : "",
156158
isPreviewProviderEnabled: mockCount > 0,
157159
isPeripheryCommentEnabled: mockCount > 0,
158160
isNimbleEnabled: mockCount > 0

Tests/NodesGeneratorTests/__Snapshots__/StencilContextsTests/testNodePresetRootStencilContext.1.txt

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
46 key/value pairs
1+
47 key/value pairs
22
▿ (2 elements)
33
- key: "analytics_imports"
44
▿ value: 1 element
@@ -111,6 +111,9 @@
111111
▿ (2 elements)
112112
- key: "store_prefix"
113113
- value: "<storePrefix>"
114+
▿ (2 elements)
115+
- key: "store_property_wrapper"
116+
- value: "<storePropertyWrapper>"
114117
▿ (2 elements)
115118
- key: "view_controllable_flow_type"
116119
- value: "<viewControllableFlowType>"

Tests/NodesGeneratorTests/__Snapshots__/StencilContextsTests/testNodeStencilContext.1.txt

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
46 key/value pairs
1+
47 key/value pairs
22
▿ (2 elements)
33
- key: "analytics_imports"
44
▿ value: 1 element
@@ -111,6 +111,9 @@
111111
▿ (2 elements)
112112
- key: "store_prefix"
113113
- value: "<storePrefix>"
114+
▿ (2 elements)
115+
- key: "store_property_wrapper"
116+
- value: "<storePropertyWrapper>"
114117
▿ (2 elements)
115118
- key: "view_controllable_flow_type"
116119
- value: "<viewControllableFlowType>"

Tests/NodesGeneratorTests/__Snapshots__/StencilContextsTests/testNodeStencilContext_withPlugin.1.txt

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
46 key/value pairs
1+
47 key/value pairs
22
▿ (2 elements)
33
- key: "analytics_imports"
44
▿ value: 1 element
@@ -113,6 +113,9 @@
113113
▿ (2 elements)
114114
- key: "store_prefix"
115115
- value: "<storePrefix>"
116+
▿ (2 elements)
117+
- key: "store_property_wrapper"
118+
- value: "<storePropertyWrapper>"
116119
▿ (2 elements)
117120
- key: "view_controllable_flow_type"
118121
- value: "<viewControllableFlowType>"

Tests/NodesGeneratorTests/__Snapshots__/StencilRendererTests/testRenderNode.ViewController-AppKitSwiftUI-mockCount-1.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ internal struct <nodeName>View {
3838
internal weak var receiver: <nodeName>Receiver?
3939

4040
/// The Store instance.
41-
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
41+
<storePropertyWrapper>
42+
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
4243

4344
/// The initializer.
4445
///

Tests/NodesGeneratorTests/__Snapshots__/StencilRendererTests/testRenderNode.ViewController-AppKitSwiftUI-mockCount-2.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ internal struct <nodeName>View {
3939
internal weak var receiver: <nodeName>Receiver?
4040

4141
/// The Store instance.
42-
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
42+
<storePropertyWrapper>
43+
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
4344

4445
/// The initializer.
4546
///

Tests/NodesGeneratorTests/__Snapshots__/StencilRendererTests/testRenderNode.ViewController-UIKitSwiftUI-mockCount-1.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ internal struct <nodeName>View {
3838
internal weak var receiver: <nodeName>Receiver?
3939

4040
/// The Store instance.
41-
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
41+
<storePropertyWrapper>
42+
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
4243

4344
/// The initializer.
4445
///

Tests/NodesGeneratorTests/__Snapshots__/StencilRendererTests/testRenderNode.ViewController-UIKitSwiftUI-mockCount-2.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ internal struct <nodeName>View {
3939
internal weak var receiver: <nodeName>Receiver?
4040

4141
/// The Store instance.
42-
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
42+
<storePropertyWrapper>
43+
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
4344

4445
/// The initializer.
4546
///

Tests/NodesGeneratorTests/__Snapshots__/StencilRendererTests/testRenderNode_withPlugin.ViewController-AppKitSwiftUI-mockCount-1.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ internal struct <nodeName>View {
3838
internal weak var receiver: <nodeName>Receiver?
3939

4040
/// The Store instance.
41-
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
41+
<storePropertyWrapper>
42+
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
4243

4344
/// The initializer.
4445
///

Tests/NodesGeneratorTests/__Snapshots__/StencilRendererTests/testRenderNode_withPlugin.ViewController-AppKitSwiftUI-mockCount-2.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ internal struct <nodeName>View {
3939
internal weak var receiver: <nodeName>Receiver?
4040

4141
/// The Store instance.
42-
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
42+
<storePropertyWrapper>
43+
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
4344

4445
/// The initializer.
4546
///

Tests/NodesGeneratorTests/__Snapshots__/StencilRendererTests/testRenderNode_withPlugin.ViewController-UIKitSwiftUI-mockCount-1.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ internal struct <nodeName>View {
3838
internal weak var receiver: <nodeName>Receiver?
3939

4040
/// The Store instance.
41-
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
41+
<storePropertyWrapper>
42+
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
4243

4344
/// The initializer.
4445
///

Tests/NodesGeneratorTests/__Snapshots__/StencilRendererTests/testRenderNode_withPlugin.ViewController-UIKitSwiftUI-mockCount-2.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ internal struct <nodeName>View {
3939
internal weak var receiver: <nodeName>Receiver?
4040

4141
/// The Store instance.
42-
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
42+
<storePropertyWrapper>
43+
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
4344

4445
/// The initializer.
4546
///

Tests/NodesGeneratorTests/__Snapshots__/StencilRendererTests/testRenderNode_withPluginAndTests.ViewController-AppKitSwiftUI-mockCount-1.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ internal struct <nodeName>View {
3838
internal weak var receiver: <nodeName>Receiver?
3939

4040
/// The Store instance.
41-
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
41+
<storePropertyWrapper>
42+
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
4243

4344
/// The initializer.
4445
///

Tests/NodesGeneratorTests/__Snapshots__/StencilRendererTests/testRenderNode_withPluginAndTests.ViewController-AppKitSwiftUI-mockCount-2.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ internal struct <nodeName>View {
3939
internal weak var receiver: <nodeName>Receiver?
4040

4141
/// The Store instance.
42-
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
42+
<storePropertyWrapper>
43+
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
4344

4445
/// The initializer.
4546
///

Tests/NodesGeneratorTests/__Snapshots__/StencilRendererTests/testRenderNode_withPluginAndTests.ViewController-UIKitSwiftUI-mockCount-1.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ internal struct <nodeName>View {
3838
internal weak var receiver: <nodeName>Receiver?
3939

4040
/// The Store instance.
41-
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
41+
<storePropertyWrapper>
42+
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
4243

4344
/// The initializer.
4445
///

Tests/NodesGeneratorTests/__Snapshots__/StencilRendererTests/testRenderNode_withPluginAndTests.ViewController-UIKitSwiftUI-mockCount-2.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ internal struct <nodeName>View {
3939
internal weak var receiver: <nodeName>Receiver?
4040

4141
/// The Store instance.
42-
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
42+
<storePropertyWrapper>
43+
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
4344

4445
/// The initializer.
4546
///

Tests/NodesGeneratorTests/__Snapshots__/StencilRendererTests/testRenderNode_withTests.ViewController-AppKitSwiftUI-mockCount-1.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ internal struct <nodeName>View {
3838
internal weak var receiver: <nodeName>Receiver?
3939

4040
/// The Store instance.
41-
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
41+
<storePropertyWrapper>
42+
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
4243

4344
/// The initializer.
4445
///

Tests/NodesGeneratorTests/__Snapshots__/StencilRendererTests/testRenderNode_withTests.ViewController-AppKitSwiftUI-mockCount-2.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ internal struct <nodeName>View {
3939
internal weak var receiver: <nodeName>Receiver?
4040

4141
/// The Store instance.
42-
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
42+
<storePropertyWrapper>
43+
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
4344

4445
/// The initializer.
4546
///

Tests/NodesGeneratorTests/__Snapshots__/StencilRendererTests/testRenderNode_withTests.ViewController-UIKitSwiftUI-mockCount-1.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ internal struct <nodeName>View {
3838
internal weak var receiver: <nodeName>Receiver?
3939

4040
/// The Store instance.
41-
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
41+
<storePropertyWrapper>
42+
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
4243

4344
/// The initializer.
4445
///

Tests/NodesGeneratorTests/__Snapshots__/StencilRendererTests/testRenderNode_withTests.ViewController-UIKitSwiftUI-mockCount-2.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ internal struct <nodeName>View {
3939
internal weak var receiver: <nodeName>Receiver?
4040

4141
/// The Store instance.
42-
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
42+
<storePropertyWrapper>
43+
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
4344

4445
/// The initializer.
4546
///

Tests/NodesGeneratorTests/__Snapshots__/XcodeTemplatePermutationTests/testNodeXcodeTemplatePermutation.AppKit-SwiftUI-CreatedForPluginList.txt

+1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474
▿ stateImports: 1 element
7575
- "<baseImport>"
7676
- storePrefix: ""
77+
- storePropertyWrapper: ""
7778
- viewControllableFlowType: "<viewControllableFlowType>"
7879
- viewControllableMockContents: "<viewControllableMockContents>"
7980
- viewControllableType: "<viewControllableType>"

Tests/NodesGeneratorTests/__Snapshots__/XcodeTemplatePermutationTests/testNodeXcodeTemplatePermutation.AppKit-SwiftUI.txt

+1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474
▿ stateImports: 1 element
7575
- "<baseImport>"
7676
- storePrefix: ""
77+
- storePropertyWrapper: ""
7778
- viewControllableFlowType: "<viewControllableFlowType>"
7879
- viewControllableMockContents: "<viewControllableMockContents>"
7980
- viewControllableType: "<viewControllableType>"

Tests/NodesGeneratorTests/__Snapshots__/XcodeTemplatePermutationTests/testNodeXcodeTemplatePermutation.AppKit.txt

+1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474
▿ stateImports: 1 element
7575
- "<baseImport>"
7676
- storePrefix: ""
77+
- storePropertyWrapper: ""
7778
- viewControllableFlowType: "<viewControllableFlowType>"
7879
- viewControllableMockContents: "<viewControllableMockContents>"
7980
- viewControllableType: "<viewControllableType>"

Tests/NodesGeneratorTests/__Snapshots__/XcodeTemplatePermutationTests/testNodeXcodeTemplatePermutation.AppKitCreatedForPluginList.txt

+1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474
▿ stateImports: 1 element
7575
- "<baseImport>"
7676
- storePrefix: ""
77+
- storePropertyWrapper: ""
7778
- viewControllableFlowType: "<viewControllableFlowType>"
7879
- viewControllableMockContents: "<viewControllableMockContents>"
7980
- viewControllableType: "<viewControllableType>"

Tests/NodesGeneratorTests/__Snapshots__/XcodeTemplatePermutationTests/testNodeXcodeTemplatePermutation.Custom.txt

+1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474
▿ stateImports: 1 element
7575
- "<baseImport>"
7676
- storePrefix: ""
77+
- storePropertyWrapper: ""
7778
- viewControllableFlowType: "<viewControllableFlowType>"
7879
- viewControllableMockContents: "<viewControllableMockContents>"
7980
- viewControllableType: "<viewControllableType>"

Tests/NodesGeneratorTests/__Snapshots__/XcodeTemplatePermutationTests/testNodeXcodeTemplatePermutation.CustomCreatedForPluginList.txt

+1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474
▿ stateImports: 1 element
7575
- "<baseImport>"
7676
- storePrefix: ""
77+
- storePropertyWrapper: ""
7778
- viewControllableFlowType: "<viewControllableFlowType>"
7879
- viewControllableMockContents: "<viewControllableMockContents>"
7980
- viewControllableType: "<viewControllableType>"

0 commit comments

Comments
 (0)