Skip to content

Commit 0d5debf

Browse files
author
Alexander Schmutz
committed
Extract function
1 parent 8593681 commit 0d5debf

3 files changed

Lines changed: 21 additions & 14 deletions

File tree

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
//
2+
// GetFirstEnumCaseName.swift
3+
//
4+
//
5+
// Created by Alexander Schmutz on 09.02.24.
6+
//
7+
8+
import SwiftSyntax
9+
10+
func getFirstEnumCaseName(from enumDecl: EnumDeclSyntax) throws -> TokenSyntax {
11+
guard let firstCaseName = enumDecl.memberBlock.members.first?.decl.as(EnumCaseDeclSyntax.self)?.elements.first?.name else {
12+
throw "Missing enum case"
13+
}
14+
return firstCaseName
15+
}

Sources/StructBuilderMacro/Enum/MakeEnumBuilder.swift

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,13 @@ import Foundation
99
import SwiftSyntax
1010

1111
func makeEnumBuilder(enumDecl: EnumDeclSyntax) throws -> StructDeclSyntax {
12-
guard let firstCaseName = enumDecl.memberBlock.members.first?.decl.as(EnumCaseDeclSyntax.self)?.elements.first?.name else {
13-
throw "Missing enum case"
14-
}
15-
16-
let structIdentifier = getStructBuilderName(from: enumDecl.name)
17-
let valueVariable = TokenSyntax(stringLiteral: "value")
18-
let returningType = TypeSyntax(stringLiteral: enumDecl.name.text)
1912
let enumMember = EnumMember(
20-
identifier: valueVariable,
21-
type: returningType,
22-
value: firstCaseName
13+
identifier: TokenSyntax(stringLiteral: "value"),
14+
type: TypeSyntax(stringLiteral: enumDecl.name.text),
15+
value: try getFirstEnumCaseName(from: enumDecl)
2316
)
24-
25-
return StructDeclSyntax(name: structIdentifier) {
17+
18+
return StructDeclSyntax(name: getStructBuilderName(from: enumDecl.name)) {
2619
MemberBlockItemListSyntax {
2720
MemberBlockItemSyntax(decl: makeVariableDeclWithValue(enumMember: enumMember))
2821
MemberBlockItemSyntax(

Sources/StructBuilderMacro/Struct/MakeStructBuilder.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,8 @@ import SwiftSyntax
1010

1111
func makeStructBuilder(structDecl: StructDeclSyntax) -> StructDeclSyntax {
1212
let structMembers = extractMembersFrom(structDecl.memberBlock.members)
13-
let structIdentifier = getStructBuilderName(from: structDecl.name)
1413

15-
return StructDeclSyntax(name: structIdentifier) {
14+
return StructDeclSyntax(name: getStructBuilderName(from: structDecl.name)) {
1615
MemberBlockItemListSyntax {
1716
for structMember in structMembers {
1817
MemberBlockItemSyntax(decl: makeVariableDecl(structMember: structMember))

0 commit comments

Comments
 (0)