Highlightr 是一个使用 Swift 构建的 iOS & macOS 语法高亮器。它使用 highlight.js 作为其核心,支持 185 种语言并自带 89 种样式。
将您乏味的包含代码的字符串转换为具有正确语法高亮的 NSAttributtedString。
CocoaPods 是 Cocoa 项目的依赖管理工具。 您可以使用以下命令安装它
$ gem install cocoapods
要使用 CocoaPods 将 Highlightr 集成到您的 Xcode 项目中,请在您的 Podfile
中指定它
source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
target '<Your Target Name>' do
pod 'Highlightr'
end
然后,运行以下命令
$ pod install
Carthage 是一个去中心化的依赖管理器,它可以构建您的依赖项并为您提供二进制框架。
您可以使用 Homebrew 使用以下命令安装 Carthage
$ brew update
$ brew install carthage
要使用 Carthage 将 Highlightr 集成到您的 Xcode 项目中,请在您的 Cartfile
中指定它
github "raspu/Highlightr"
运行 carthage update
来构建框架并将构建好的 Highlightr.framework
拖入您的 Xcode 项目。Highlightr
Highlightr 提供了两个主要的类
这是主要的入口点,您可以使用它将代码字符串转换为 NSAttributed 字符串。
let highlightr = Highlightr()
highlightr.setTheme(to: "paraiso-dark")
let code = "let a = 1"
// You can omit the second parameter to use automatic language detection.
let highlightedCode = highlightr.highlight(code, as: "swift")
NSTextStorage 的子类,您可以使用它来实时突出显示文本。
let textStorage = CodeAttributedString()
textStorage.language = "Swift"
let layoutManager = NSLayoutManager()
textStorage.addLayoutManager(layoutManager)
let textContainer = NSTextContainer(size: view.bounds.size)
layoutManager.addTextContainer(textContainer)
let textView = UITextView(frame: yourFrame, textContainer: textContainer)
是的,Highlightr 依赖于 iOS & macOS JavaScriptCore 来使用 highlight.js 解析代码。 这实际上非常快!
它永远不会像原生解决方案那样快,但它足够快,可以用于实时编辑器。
它带有一个自定义的 HTML 解析器,用于创建 NSAttributtedStrings,预处理了主题并预加载了 JS 库。 因此,在我的 iPhone 6s 上处理 500 行代码大约需要 50 毫秒。
您可以在 cocoadocs 上找到最新版本的文档。
Highlightr 在 MIT 许可证下可用。 有关更多信息,请参见 LICENSE 文件。
Highlight.js 在 BSD 许可证下可用。 您可以在此处找到许可证文件。