Sourcerer
纯 Swift 元编程
在 Sourcery 上运行的纯 Swift 代码生成器,用于证明概念。
介绍
Sourcerer 由一系列 swift 模块组成,可以将其导入到您的 macOS 应用程序中,以加载 Sourcery 从 Swift 源中提取的信息,即 SourceryRuntime.Types
对象。
SourcererArchiver
使用 Sourcery 将SourceryRuntime.Types
对象的存档写入磁盘。SourcererUnarchiver
将SourceryRuntime.Types
对象解档为运行中的应用程序。- 解档器需要
SourcererRuntime
来加载存档信息。 SourcererTypes
和SourcererRenderer
包含一些对SourceryRuntime.Types
的辅助程序和扩展。
要了解它的工作原理,请查看示例项目
$ git clone https://github.com/hectr/swift-sourcerer.git
$ cd swift-sourcerer
$ pod install
$ open sourcerer.xcworkspace
用法
开始使用 Sourcerer 的步骤:
-
创建一个新的 macOS 项目(例如,示例)
-
设置依赖项(
Podfile
)
target 'Example' do
# archive
pod 'SourcererArchiver', :git => 'https://github.com/hectr/swift-sourcerer.git'
# unarchive
pod 'SourcererUnarchiver', :git => 'https://github.com/hectr/swift-sourcerer.git'
pod 'SourceryRuntime', :git => 'https://github.com/hectr/swift-sourcerer.git'
end
- 下载
SourceryRuntime
源文件
./install_sourcery_runtime.sh
- 实现初始代码(
main.swift
)
import SourceryRuntime
import SourcererArchiver
import SourcererUnarchiver
let ignoreUnknownArguments = false
let archive = GenerateTypesArchive().execute
let unarchive = UnarchiveTypesFromPath().execute
let typesArchivePath = try archive(ignoreUnknownArguments)
let types = try unarchive(typesArchivePath)
print("- There are \(types.protocols.count) protocols.")
print("- There are \(types.structs.count) structs.")
print("- There are \(types.classes.count) classes.")
- 当执行此示例时,您需要传入:(1)Sourcery 可执行文件的路径(
--sourcery-path
)和(2)源文件的路径(--sources
)
示例 --sourcery-path /path/to/sourcery --sources /path/to/sources/