使用JavaScriptCore的Objective-C包装器,用于Prism(JavaScript语法高亮程序)。
Prism 是一个轻量级、健壮、优雅的语法高亮库,将代码片段渲染为语法高亮HTML。它由 Lea Verou 创建,用JavaScript编写,基于正则表达式。
此库/框架使用 JavaScriptCore 来执行所谓的“服务器端渲染”。它支持大多数现代OS X版本(我不太确定它能追溯到哪个版本,但至少10.7+应该是没有问题的)以及iOS 7或更高版本。
快速示例
#import <Prism/Prism.h>
// ...
PRISyntaxHighlighter *highlighter = [[PRISyntaxhighlighter alloc] initWithDefaultAliases:YES];
NSString *output = [highlighter highlight:@"int" asLanguage:@"objc" error:NULL];
NSLog(@"%@", output); // <span class="token keyword">int</span>
主要类是 PRISyntaxHighlighter
。它在初始化时内部构建Prism。之后,您可以使用 -highlight:asLanguage:error:
来高亮代码片段。
您在高亮时传入的语言名称需要是以下之一:
-syntaxNames
返回的内置定义。-aliases
返回的语言别名之一。您可以使用 -addAlias:forName:
、-addAliasesFromDictionary:
和 -removeAlias:
来添加/删除别名。别名应指向内置语言名称或另一个别名。
通过 +defaultAliases
提供了一些推荐的别名集。请注意,如果您使用 init
来初始化 PRISyntaxHighlighter
,它们将不会被加载。
Prism提供了一些内置样式。您可以通过 -themes
获取一组主题以及指向其相应CSS文件的URL。
在 PrismDemo
目录中有演示项目,展示了此库可以做什么。您可以在OS X的Xcode中通过打开 Prism.xcworkspace
并运行 PrismDemo 方案来构建它。
此存储库可以构建为一个OS X框架,您可以直接使用它。或者您也可以通过 CocoaPods 来安装。
pod install Prism
由于原始Prism需要绑定到主应用程序,所以我建议您不要只是尝试将其包含为子模块或甚至是复制粘贴代码。您需要非常小心地构建项目结构,以确保可以正确地找到资源。这可以工作,但您将浪费大量时间。