GitHub license Tests

Hatch

一个简单、可扩展的解析器,用于使用 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