Skip to content

Commit

Permalink
Add ObservedObject macro if store_prefix (#863)
Browse files Browse the repository at this point in the history
* Add ObservedObject macro if store_prefix

* Add store_property_wrapper
  • Loading branch information
tinder-garricnahapetian authored Oct 30, 2024
1 parent b9eb0b3 commit 535e279
Show file tree
Hide file tree
Showing 36 changed files with 88 additions and 20 deletions.
1 change: 1 addition & 0 deletions Sources/NodesGenerator/Config.swift
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ public struct Config: Codable, Equatable {
public var isPeripheryCommentEnabled: Bool

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

public init(
Expand Down
1 change: 1 addition & 0 deletions Sources/NodesGenerator/PresetGenerator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ public final class PresetGenerator {
contextGenericTypes: config.contextGenericTypes,
workerGenericTypes: config.workerGenericTypes,
storePrefix: config.storePrefix,
storePropertyWrapper: config.storePropertyWrapper,
isPreviewProviderEnabled: config.isPreviewProviderEnabled,
isPeripheryCommentEnabled: config.isPeripheryCommentEnabled,
isNimbleEnabled: config.isNimbleEnabled
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,12 @@ internal struct {{ node_name }}View {
internal weak var receiver: {{ node_name }}Receiver?

/// The Store instance.
private let store: Any{{ store_prefix }}ViewStateStore<{{ node_name }}ViewState>
{% if store_property_wrapper %}
{{ store_property_wrapper }}
private var store: Any{{ store_prefix }}ViewStateStore<{{ node_name }}ViewState>
{% else %}
private let store: AnyViewStateStore<{{ node_name }}ViewState>
{% endif %}

/// The initializer.
///
Expand Down
13 changes: 13 additions & 0 deletions Sources/NodesGenerator/StencilContexts/NodeStencilContext.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
// Copyright © 2021 Tinder (Match Group, LLC)
//

// swiftlint:disable file_length

// swiftlint:disable:next type_body_length
public struct NodeStencilContext: StencilContext {

Expand Down Expand Up @@ -47,6 +49,7 @@ public struct NodeStencilContext: StencilContext {
private let contextGenericTypes: [String]
private let workerGenericTypes: [String]
private let storePrefix: String
private let storePropertyWrapper: String
private let isPreviewProviderEnabled: Bool
private let isPeripheryCommentEnabled: Bool
private let isNimbleEnabled: Bool
Expand Down Expand Up @@ -96,6 +99,7 @@ public struct NodeStencilContext: StencilContext {
"context_generic_types": contextGenericTypes,
"worker_generic_types": workerGenericTypes,
"store_prefix": storePrefix,
"store_property_wrapper": storePropertyWrapper,
"is_preview_provider_enabled": isPreviewProviderEnabled,
"is_periphery_comment_enabled": isPeripheryCommentEnabled,
"is_nimble_enabled": isNimbleEnabled
Expand Down Expand Up @@ -146,6 +150,7 @@ public struct NodeStencilContext: StencilContext {
contextGenericTypes: [String],
workerGenericTypes: [String],
storePrefix: String,
storePropertyWrapper: String,
isPreviewProviderEnabled: Bool,
isPeripheryCommentEnabled: Bool,
isNimbleEnabled: Bool
Expand Down Expand Up @@ -194,12 +199,14 @@ public struct NodeStencilContext: StencilContext {
contextGenericTypes: contextGenericTypes,
workerGenericTypes: workerGenericTypes,
storePrefix: storePrefix,
storePropertyWrapper: storePropertyWrapper,
isPreviewProviderEnabled: isPreviewProviderEnabled,
isPeripheryCommentEnabled: isPeripheryCommentEnabled,
isNimbleEnabled: isNimbleEnabled
)
}

// swiftlint:disable:next function_body_length
public init(
preset: Preset,
fileHeader: String,
Expand Down Expand Up @@ -238,6 +245,7 @@ public struct NodeStencilContext: StencilContext {
contextGenericTypes: [String],
workerGenericTypes: [String],
storePrefix: String,
storePropertyWrapper: String,
isPreviewProviderEnabled: Bool,
isPeripheryCommentEnabled: Bool,
isNimbleEnabled: Bool
Expand Down Expand Up @@ -288,6 +296,7 @@ public struct NodeStencilContext: StencilContext {
contextGenericTypes: contextGenericTypes,
workerGenericTypes: workerGenericTypes,
storePrefix: storePrefix,
storePropertyWrapper: storePropertyWrapper,
isPreviewProviderEnabled: isPreviewProviderEnabled,
isPeripheryCommentEnabled: isPeripheryCommentEnabled,
isNimbleEnabled: isNimbleEnabled
Expand Down Expand Up @@ -338,6 +347,7 @@ public struct NodeStencilContext: StencilContext {
contextGenericTypes: [String],
workerGenericTypes: [String],
storePrefix: String,
storePropertyWrapper: String,
isPreviewProviderEnabled: Bool,
isPeripheryCommentEnabled: Bool,
isNimbleEnabled: Bool
Expand Down Expand Up @@ -386,8 +396,11 @@ public struct NodeStencilContext: StencilContext {
self.contextGenericTypes = contextGenericTypes
self.workerGenericTypes = workerGenericTypes
self.storePrefix = storePrefix
self.storePropertyWrapper = storePropertyWrapper
self.isPreviewProviderEnabled = isPreviewProviderEnabled
self.isPeripheryCommentEnabled = isPeripheryCommentEnabled
self.isNimbleEnabled = isNimbleEnabled
}
}

// swiftlint:enable file_length
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ internal struct NodeXcodeTemplatePermutation: XcodeTemplatePermutation {
contextGenericTypes: config.contextGenericTypes,
workerGenericTypes: config.workerGenericTypes,
storePrefix: config.storePrefix,
storePropertyWrapper: config.storePropertyWrapper,
isPreviewProviderEnabled: config.isPreviewProviderEnabled,
isPeripheryCommentEnabled: config.isPeripheryCommentEnabled,
isNimbleEnabled: config.isNimbleEnabled
Expand Down
2 changes: 2 additions & 0 deletions Tests/NodesGeneratorTests/Support/TestFactories.swift
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ extension TestFactories {
contextGenericTypes: .mock(with: "contextGenericType", count: mockCount),
workerGenericTypes: .mock(with: "workerGenericType", count: mockCount),
storePrefix: mockCount > 0 ? "<storePrefix>" : "",
storePropertyWrapper: mockCount > 0 ? "<storePropertyWrapper>" : "",
isPreviewProviderEnabled: mockCount > 0,
isPeripheryCommentEnabled: mockCount > 0,
isNimbleEnabled: mockCount > 0
Expand Down Expand Up @@ -153,6 +154,7 @@ extension TestFactories {
contextGenericTypes: .mock(with: "contextGenericType", count: mockCount),
workerGenericTypes: .mock(with: "workerGenericType", count: mockCount),
storePrefix: mockCount > 0 ? "<storePrefix>" : "",
storePropertyWrapper: mockCount > 0 ? "<storePropertyWrapper>" : "",
isPreviewProviderEnabled: mockCount > 0,
isPeripheryCommentEnabled: mockCount > 0,
isNimbleEnabled: mockCount > 0
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
46 key/value pairs
47 key/value pairs
▿ (2 elements)
- key: "analytics_imports"
▿ value: 1 element
Expand Down Expand Up @@ -111,6 +111,9 @@
▿ (2 elements)
- key: "store_prefix"
- value: "<storePrefix>"
▿ (2 elements)
- key: "store_property_wrapper"
- value: "<storePropertyWrapper>"
▿ (2 elements)
- key: "view_controllable_flow_type"
- value: "<viewControllableFlowType>"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
46 key/value pairs
47 key/value pairs
▿ (2 elements)
- key: "analytics_imports"
▿ value: 1 element
Expand Down Expand Up @@ -111,6 +111,9 @@
▿ (2 elements)
- key: "store_prefix"
- value: "<storePrefix>"
▿ (2 elements)
- key: "store_property_wrapper"
- value: "<storePropertyWrapper>"
▿ (2 elements)
- key: "view_controllable_flow_type"
- value: "<viewControllableFlowType>"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
46 key/value pairs
47 key/value pairs
▿ (2 elements)
- key: "analytics_imports"
▿ value: 1 element
Expand Down Expand Up @@ -113,6 +113,9 @@
▿ (2 elements)
- key: "store_prefix"
- value: "<storePrefix>"
▿ (2 elements)
- key: "store_property_wrapper"
- value: "<storePropertyWrapper>"
▿ (2 elements)
- key: "view_controllable_flow_type"
- value: "<viewControllableFlowType>"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ internal struct <nodeName>View {
internal weak var receiver: <nodeName>Receiver?

/// The Store instance.
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
<storePropertyWrapper>
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>

/// The initializer.
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ internal struct <nodeName>View {
internal weak var receiver: <nodeName>Receiver?

/// The Store instance.
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
<storePropertyWrapper>
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>

/// The initializer.
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ internal struct <nodeName>View {
internal weak var receiver: <nodeName>Receiver?

/// The Store instance.
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
<storePropertyWrapper>
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>

/// The initializer.
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ internal struct <nodeName>View {
internal weak var receiver: <nodeName>Receiver?

/// The Store instance.
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
<storePropertyWrapper>
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>

/// The initializer.
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ internal struct <nodeName>View {
internal weak var receiver: <nodeName>Receiver?

/// The Store instance.
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
<storePropertyWrapper>
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>

/// The initializer.
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ internal struct <nodeName>View {
internal weak var receiver: <nodeName>Receiver?

/// The Store instance.
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
<storePropertyWrapper>
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>

/// The initializer.
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ internal struct <nodeName>View {
internal weak var receiver: <nodeName>Receiver?

/// The Store instance.
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
<storePropertyWrapper>
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>

/// The initializer.
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ internal struct <nodeName>View {
internal weak var receiver: <nodeName>Receiver?

/// The Store instance.
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
<storePropertyWrapper>
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>

/// The initializer.
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ internal struct <nodeName>View {
internal weak var receiver: <nodeName>Receiver?

/// The Store instance.
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
<storePropertyWrapper>
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>

/// The initializer.
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ internal struct <nodeName>View {
internal weak var receiver: <nodeName>Receiver?

/// The Store instance.
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
<storePropertyWrapper>
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>

/// The initializer.
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ internal struct <nodeName>View {
internal weak var receiver: <nodeName>Receiver?

/// The Store instance.
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
<storePropertyWrapper>
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>

/// The initializer.
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ internal struct <nodeName>View {
internal weak var receiver: <nodeName>Receiver?

/// The Store instance.
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
<storePropertyWrapper>
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>

/// The initializer.
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ internal struct <nodeName>View {
internal weak var receiver: <nodeName>Receiver?

/// The Store instance.
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
<storePropertyWrapper>
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>

/// The initializer.
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ internal struct <nodeName>View {
internal weak var receiver: <nodeName>Receiver?

/// The Store instance.
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
<storePropertyWrapper>
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>

/// The initializer.
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ internal struct <nodeName>View {
internal weak var receiver: <nodeName>Receiver?

/// The Store instance.
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
<storePropertyWrapper>
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>

/// The initializer.
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ internal struct <nodeName>View {
internal weak var receiver: <nodeName>Receiver?

/// The Store instance.
private let store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>
<storePropertyWrapper>
private var store: Any<storePrefix>ViewStateStore<<nodeName>ViewState>

/// The initializer.
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@
▿ stateImports: 1 element
- "<baseImport>"
- storePrefix: ""
- storePropertyWrapper: ""
- viewControllableFlowType: "<viewControllableFlowType>"
- viewControllableMockContents: "<viewControllableMockContents>"
- viewControllableType: "<viewControllableType>"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@
▿ stateImports: 1 element
- "<baseImport>"
- storePrefix: ""
- storePropertyWrapper: ""
- viewControllableFlowType: "<viewControllableFlowType>"
- viewControllableMockContents: "<viewControllableMockContents>"
- viewControllableType: "<viewControllableType>"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@
▿ stateImports: 1 element
- "<baseImport>"
- storePrefix: ""
- storePropertyWrapper: ""
- viewControllableFlowType: "<viewControllableFlowType>"
- viewControllableMockContents: "<viewControllableMockContents>"
- viewControllableType: "<viewControllableType>"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@
▿ stateImports: 1 element
- "<baseImport>"
- storePrefix: ""
- storePropertyWrapper: ""
- viewControllableFlowType: "<viewControllableFlowType>"
- viewControllableMockContents: "<viewControllableMockContents>"
- viewControllableType: "<viewControllableType>"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@
▿ stateImports: 1 element
- "<baseImport>"
- storePrefix: ""
- storePropertyWrapper: ""
- viewControllableFlowType: "<viewControllableFlowType>"
- viewControllableMockContents: "<viewControllableMockContents>"
- viewControllableType: "<viewControllableType>"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@
▿ stateImports: 1 element
- "<baseImport>"
- storePrefix: ""
- storePropertyWrapper: ""
- viewControllableFlowType: "<viewControllableFlowType>"
- viewControllableMockContents: "<viewControllableMockContents>"
- viewControllableType: "<viewControllableType>"
Expand Down
Loading

0 comments on commit 535e279

Please sign in to comment.