Skip to content

Commit c53390e

Browse files
committed
feat: new macro support for classes, code and docs cleanup
1 parent 5431c5e commit c53390e

File tree

13 files changed

+676
-266
lines changed

13 files changed

+676
-266
lines changed

Plugins/BridgeJS/Sources/BridgeJSCore/ExportSwift.swift

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,8 @@ class ExportSwift {
127127
return nil
128128
}
129129

130-
let (name, namespace) = extractNameAndNamespace(from: node, jsAttribute: jsAttribute)
130+
let name = node.name.text
131+
let namespace = extractNamespace(from: jsAttribute)
131132

132133
var parameters: [Parameter] = []
133134
for param in node.signature.parameterClause.parameters {
@@ -196,17 +197,15 @@ class ExportSwift {
196197
return Effects(isAsync: isAsync, isThrows: isThrows)
197198
}
198199

199-
private func extractNameAndNamespace(
200-
from node: FunctionDeclSyntax,
201-
jsAttribute: AttributeSyntax
202-
) -> (name: String, namespace: [String]?) {
200+
private func extractNamespace(
201+
from jsAttribute: AttributeSyntax
202+
) -> [String]? {
203203
guard let arguments = jsAttribute.arguments?.as(LabeledExprListSyntax.self),
204204
let firstArg = arguments.first?.expression.as(StringLiteralExprSyntax.self),
205205
let namespaceString = firstArg.segments.first?.as(StringSegmentSyntax.self)?.content.text else {
206-
return (node.name.text, nil)
206+
return nil
207207
}
208-
let namespaces = namespaceString.split(separator: ".").map(String.init)
209-
return (node.name.text, namespaces)
208+
return namespaceString.split(separator: ".").map(String.init)
210209
}
211210

212211
override func visit(_ node: InitializerDeclSyntax) -> SyntaxVisitorContinueKind {
@@ -241,15 +240,17 @@ class ExportSwift {
241240

242241
override func visit(_ node: ClassDeclSyntax) -> SyntaxVisitorContinueKind {
243242
let name = node.name.text
243+
244244
stateStack.push(state: .classBody(name: name))
245245

246-
guard node.attributes.hasJSAttribute() else { return .skipChildren }
247-
246+
guard let jsAttribute = node.attributes.firstJSAttribute else { return .skipChildren }
247+
248+
let namespace = extractNamespace(from: jsAttribute)
248249
exportedClassByName[name] = ExportedClass(
249250
name: name,
250251
constructor: nil,
251252
methods: [],
252-
namespace: nil
253+
namespace: namespace
253254
)
254255
exportedClassNames.append(name)
255256
return .visitChildren

0 commit comments

Comments
 (0)