一个简单、可扩展的解析器,用于使用 SwiftSyntax 从 Swift 代码中获取层级符号列表。
当使用 Swift 包管理器时,将以下内容添加到您的 Package.swift
文件中的包依赖项中
.package(url: "https://github.com/sdidla/Hatch.git", from: "<#latest swift-syntax tag#>")
Hatch 发布 对应于 SwiftSyntax 的发布
import Hatch
let source: String = <some swift code>
let symbols = SymbolParser.parse(source: source)
dump(symbols)
输入
struct A1 {
struct BC {
struct C1 {}
struct C2 {}
struct C3 {}
}
struct BD {
struct D1 {}
struct D2 {}
}
struct BX {}
}
struct A2 {}
enum MyEnum {}
输出
▿ 3 elements
▿ Hatch.Struct
- name: "A1"
▿ children: 3 elements
▿ Hatch.Struct
- name: "BC"
▿ children: 3 elements
▿ Hatch.Struct
- name: "C1"
- children: 0 elements
- inheritedTypes: 0 elements
▿ Hatch.Struct
- name: "C2"
- children: 0 elements
- inheritedTypes: 0 elements
▿ Hatch.Struct
- name: "C3"
- children: 0 elements
- inheritedTypes: 0 elements
- inheritedTypes: 0 elements
▿ Hatch.Struct
- name: "BD"
▿ children: 2 elements
▿ Hatch.Struct
- name: "D1"
- children: 0 elements
- inheritedTypes: 0 elements
▿ Hatch.Struct
- name: "D2"
- children: 0 elements
- inheritedTypes: 0 elements
- inheritedTypes: 0 elements
▿ Hatch.Struct
- name: "BX"
- children: 0 elements
- inheritedTypes: 0 elements
- inheritedTypes: 0 elements
▿ Hatch.Struct
- name: "A2"
- children: 0 elements
- inheritedTypes: 0 elements
▿ Hatch.Enum
- name: "MyEnum"
- children: 0 elements
- inheritedTypes: 0 elements