diff --git a/Sources/FigmaGen/Models/Images/ImageComponentSetAsset.swift b/Sources/FigmaGen/Models/Images/ImageComponentSetAsset.swift index 053aac5..8de0597 100644 --- a/Sources/FigmaGen/Models/Images/ImageComponentSetAsset.swift +++ b/Sources/FigmaGen/Models/Images/ImageComponentSetAsset.swift @@ -7,8 +7,5 @@ struct ImageComponentSetAsset: Encodable, Hashable { let name: String let parentName: String? let assets: [ImageRenderedNode: ImageAsset] - - var isSingleComponent: Bool { - assets.count == 1 - } + let nodeType: ImageNodeType } diff --git a/Sources/FigmaGen/Models/Images/ImageComponentSetNode.swift b/Sources/FigmaGen/Models/Images/ImageComponentSetNode.swift index 2ee6300..8270ab4 100644 --- a/Sources/FigmaGen/Models/Images/ImageComponentSetNode.swift +++ b/Sources/FigmaGen/Models/Images/ImageComponentSetNode.swift @@ -7,6 +7,7 @@ struct ImageComponentSetNode: Encodable, Hashable { let name: String let parentName: String? let components: [ImageNode] + let type: ImageNodeType // MARK: - Initializers @@ -14,11 +15,13 @@ struct ImageComponentSetNode: Encodable, Hashable { self.name = name self.parentName = parentName self.components = components + self.type = .componentSet } init(name: String, parentName: String?, component: ImageNode) { self.name = name self.parentName = parentName self.components = [component] + self.type = .component } } diff --git a/Sources/FigmaGen/Models/Images/ImageComponentSetRenderedNode.swift b/Sources/FigmaGen/Models/Images/ImageComponentSetRenderedNode.swift index c830b8c..9ffbcd0 100644 --- a/Sources/FigmaGen/Models/Images/ImageComponentSetRenderedNode.swift +++ b/Sources/FigmaGen/Models/Images/ImageComponentSetRenderedNode.swift @@ -7,8 +7,5 @@ struct ImageComponentSetRenderedNode: Encodable, Hashable { let name: String let parentName: String? let components: [ImageRenderedNode] - - var isSingleComponent: Bool { - components.count == 1 - } + let type: ImageNodeType } diff --git a/Sources/FigmaGen/Models/Images/ImageNodeType.swift b/Sources/FigmaGen/Models/Images/ImageNodeType.swift new file mode 100644 index 0000000..4dbbf62 --- /dev/null +++ b/Sources/FigmaGen/Models/Images/ImageNodeType.swift @@ -0,0 +1,9 @@ +import Foundation + +enum ImageNodeType: Encodable, Hashable { + + // MARK: - Enumeration Cases + + case component + case componentSet +} diff --git a/Sources/FigmaGen/Providers/Images/Assets/DefaultImageAssetsProvider.swift b/Sources/FigmaGen/Providers/Images/Assets/DefaultImageAssetsProvider.swift index bd9bd8e..93e914e 100644 --- a/Sources/FigmaGen/Providers/Images/Assets/DefaultImageAssetsProvider.swift +++ b/Sources/FigmaGen/Providers/Images/Assets/DefaultImageAssetsProvider.swift @@ -24,7 +24,7 @@ final class DefaultImageAssetsProvider: ImageAssetsProvider, ImagesFolderPathRes setNode: ImageComponentSetRenderedNode, namingStyle: ImageNamingStyle ) -> String { - let name = setNode.isSingleComponent ? node.base.name : "\(setNode.name) \(node.base.name)" + let name = setNode.type == .component ? node.base.name : "\(setNode.name) \(node.base.name)" switch namingStyle { case .camelCase: @@ -85,7 +85,8 @@ final class DefaultImageAssetsProvider: ImageAssetsProvider, ImagesFolderPathRes return ImageComponentSetAsset( name: setNode.name, parentName: setNode.parentName, - assets: assets + assets: assets, + nodeType: setNode.type ) } } diff --git a/Sources/FigmaGen/Providers/Images/ImagesFolderPathResolving.swift b/Sources/FigmaGen/Providers/Images/ImagesFolderPathResolving.swift index 6ce373b..f5819a4 100644 --- a/Sources/FigmaGen/Providers/Images/ImagesFolderPathResolving.swift +++ b/Sources/FigmaGen/Providers/Images/ImagesFolderPathResolving.swift @@ -50,7 +50,7 @@ extension ImagesFolderPathResolving { groupByFrame: groupByFrame, groupByComponentSet: groupByComponentSet, parentNodeName: setNode.parentName, - isSingleComponent: setNode.isSingleComponent, + isSingleComponent: setNode.type == .component, nodeName: setNode.name, folderPath: folderPath ) @@ -66,7 +66,7 @@ extension ImagesFolderPathResolving { groupByFrame: groupByFrame, groupByComponentSet: groupByComponentSet, parentNodeName: setAsset.parentName, - isSingleComponent: setAsset.isSingleComponent, + isSingleComponent: setAsset.nodeType == .component, nodeName: setAsset.name, folderPath: folderPath ) diff --git a/Sources/FigmaGen/Providers/Images/Render/DefaultImageRenderProvider.swift b/Sources/FigmaGen/Providers/Images/Render/DefaultImageRenderProvider.swift index 960eadb..71464c2 100644 --- a/Sources/FigmaGen/Providers/Images/Render/DefaultImageRenderProvider.swift +++ b/Sources/FigmaGen/Providers/Images/Render/DefaultImageRenderProvider.swift @@ -51,7 +51,12 @@ final class DefaultImageRenderProvider: ImageRenderProvider { return ImageRenderedNode(base: imageNode, urls: nodeImageURLs) } - return ImageComponentSetRenderedNode(name: node.name, parentName: node.parentName, components: renderedNodes) + return ImageComponentSetRenderedNode( + name: node.name, + parentName: node.parentName, + components: renderedNodes, + type: node.type + ) } private func renderImages( diff --git a/Sources/FigmaGen/Providers/Images/Resources/DefaultImageResourcesProvider.swift b/Sources/FigmaGen/Providers/Images/Resources/DefaultImageResourcesProvider.swift index 05c27e5..6e8fddd 100644 --- a/Sources/FigmaGen/Providers/Images/Resources/DefaultImageResourcesProvider.swift +++ b/Sources/FigmaGen/Providers/Images/Resources/DefaultImageResourcesProvider.swift @@ -24,7 +24,7 @@ final class DefaultImageResourcesProvider: ImageResourcesProvider, ImagesFolderP setNode: ImageComponentSetRenderedNode, namingStyle: ImageNamingStyle ) -> String { - let fileName = setNode.isSingleComponent ? node.base.name : "\(setNode.name) \(node.base.name)" + let fileName = setNode.type == .component ? node.base.name : "\(setNode.name) \(node.base.name)" switch namingStyle { case .camelCase: