Swiftpack.co - apple/swift-docc-symbolkit as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by apple.
apple/swift-docc-symbolkit swift-DEVELOPMENT-SNAPSHOT-2021-11-20-a
A Swift package for encoding and decoding Swift Symbol Graph files.
⭐️ 107
🕓 1 week ago
.package(url: "https://github.com/apple/swift-docc-symbolkit.git", from: "swift-DEVELOPMENT-SNAPSHOT-2021-11-20-a")

SymbolKit

The specification and reference model for the Symbol Graph File Format.

A Symbol Graph models a module, also known in various programming languages as a "framework", "library", or "package", as a directed graph. In this graph, the nodes are declarations, and the edges connecting nodes are relationships between declarations.

To illustrate the shape of a symbol graph, take the following Swift code as a module called MyModule:

public struct MyStruct {
  public var x: Int
}

There are two nodes in this module's graph: the structure MyStruct and its property, x:

x is related to MyStruct: it is a member of MyStruct. SymbolKit represents relationships as directed edges in the graph:

The source of an edge points to its target. You can read this edge as x is a member of MyStruct. Every edge is qualified by some kind of relationship; in this case, the kind is membership. There can be many kinds of relationships, even multiple relationships between the same two nodes. Here's another example, adding a Swift protocol to the mix:

public protocol P {}

public struct MyStruct: P {
  public var x: Int
}

Now we've added a new node for the protocol P, and a new conformance relationship between MyStruct and P:

By modeling different kinds of relationships, SymbolKit can provide rich data to power documentation, answering interesting questions, such as:

  • Which types conform to this protocol?
  • What is the class hierarchy rooted at this class?
  • Which protocol provides a requirement called count?
  • Which types customize this protocol requirement?

In addition, graph representations of data also present opportunities for visualizations in documentation, illustrating the structure or hierarchy of a module.

GitHub

link
Stars: 107
Last commit: 3 days ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics