Highlightr

Version Carthage Compatible CocoaPods License Platform

Highlightr 是一个使用 Swift 构建的 iOS & macOS 语法高亮器。它使用 highlight.js 作为其核心,支持 185 种语言并自带 89 种样式

将您乏味的包含代码的字符串转换为具有正确语法高亮的 NSAttributtedString。

Sample Gif A Sample Gif B

安装

要求

CocoaPods

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

Carthage 是一个去中心化的依赖管理器,它可以构建您的依赖项并为您提供二进制框架。

您可以使用 Homebrew 使用以下命令安装 Carthage

$ brew update
$ brew install carthage

要使用 Carthage 将 Highlightr 集成到您的 Xcode 项目中,请在您的 Cartfile 中指定它

github "raspu/Highlightr"

运行 carthage update 来构建框架并将构建好的 Highlightr.framework 拖入您的 Xcode 项目。Highlightr

使用方法

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") 
	

CodeAttributedString

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)

JavaScript?

是的,Highlightr 依赖于 iOS & macOS JavaScriptCore 来使用 highlight.js 解析代码。 这实际上非常快!

性能

它永远不会像原生解决方案那样快,但它足够快,可以用于实时编辑器。

它带有一个自定义的 HTML 解析器,用于创建 NSAttributtedStrings,预处理了主题并预加载了 JS 库。 因此,在我的 iPhone 6s 上处理 500 行代码大约需要 50 毫秒。

文档

您可以在 cocoadocs 上找到最新版本的文档。

许可证

Highlightr 在 MIT 许可证下可用。 有关更多信息,请参见 LICENSE 文件。

Highlight.js 在 BSD 许可证下可用。 您可以在此处找到许可证文件