测试已测试 | ✓ |
语言语言 | Obj-CObjective C |
许可证 | MIT |
发布上次发布 | 2016年1月 |
由 Francis Chong 维护。
依赖项 | |
ObjectiveSugar | ~> 1.1.0 |
IGDigest | >= 1.1.3 |
Ruby for Objective-C,通过 Opal 和 JavaScriptCore 实现。
#import <JavaScriptCore/JavaScriptCore.h>
#import "JSContext+OpalAdditions.h"
JSValue* value = [context evaluateRuby:@"[1,2,3,4,5].inject{|total, i| total + i }"];
[value toNumber]; // => 15
Opal 通过将 Ruby 编译成 JavaScript 来工作。但是在 JavaScriptCore 上运行时,您不希望将所有内容都加载到上下文中。
OpalAdditions 修改了 Opal 对 require
的实现。您可以在运行时需求一个 Ruby 文件。
// require with Ruby
[context evaluateRuby:@"require 'singleton'"];
or
// require with Objective-C
[context requireRubyWithFilename:@"singleton" error:nil];
OpalAdditions 将从 $LOAD_PATH 搜索文件名,编译文件并将其加载。
注意:如果您经常使用某些类,应该使用 opal-sprockets
预编译它们并将 JavaScript 压缩包打包。
您可以将更多路径添加到 $LOAD_PATH 以加载您的自定义宝石
// Add load path
NSString* newPath = [[NSBundle bundleForClass:[self class]] pathForResource:@"gems" ofType:nil];
[context appendOpalLoadPathsWithPath:newPath];
// load addition gems
[context requireRubyWithFilename:@"my_awesome_gems" error:nil];
您可能希望将宝石路径作为“文件夹引用”而不是常规的“组”。
要通过 CocoaPods 安装 JavaScriptCoreOpalAdditions,请将以下行添加到 Podfile 中
pod "JavaScriptCoreOpalAdditions", '~> 0.3.0'
安装 Objective-C 库的 Pods
下载 opal 的子模块,并构建必要文件