- 3.0.0 and master220.127.116.11.04.2
- 3.0.0 and masteriOSmacOS(Intel)macOS(ARM)LinuxtvOSwatchOS
iOS & macOS Syntax Highlighter using Highlight.js as a driver. SPM version.
SPM Branch: 2020-03-01: WIP to convert this to SwiftPM.
Takes your lame string with code and returns a NSAttributtedString with proper syntax highlighting.
Note: This is a fork of the original Highlightr which uses Swift Package Manager instead of CocoaPods. The current version uses HighlightJS-Swift which packages just the default Highlight.js style and language selection.
// swift-tools-version:5.1 import PackageDescription let package = Package( name: "HolyCow", dependencies: [ .package(url: "firstname.lastname@example.org:helje5/Highlightr.git", from: "3.0.0") ], targets: [ .target( name: "HolyCow", dependencies: [ "Highlightr" ]) ] )
Highlightr provides two main classes:
This is the main endpoint, you can use it to convert code strings into NSAttributed strings.
let highlightr = Highlightr()! highlightr.setTheme(to: "default") // only default provided right now let code = "let a = 1" // You can omit the second parameter to use automatic language detection. let highlightedCode = highlightr.highlight(code, as: "swift")
A subclass of NSTextStorage, you can use it to highlight text on real time.
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)
It will never be as fast as a native solution, but it's fast enough to be used on a real time editor.
It comes with a custom made HTML parser for creating NSAttributtedStrings, is pre-processing the themes and is preloading the JS libraries. As result it's taking around of 50 ms on my iPhone 6s for processing 500 lines of code.
You can find the documentation for the latest release on cocoadocs.
Highlightr is available under the MIT license. See the LICENSE file for more info.
Highlight.js is available under the BSD license. You can find the license file here.