JavaScriptCoreOpalAdditions 0.5.1

JavaScriptCoreOpalAdditions 0.5.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布上次发布2016年1月

Francis Chong 维护。



 
依赖项
ObjectiveSugar~> 1.1.0
IGDigest>= 1.1.3
 

  • By
  • Francis Chong

JavaScriptCore OpalAdditions

Ruby for Objective-C,通过 Opal 和 JavaScriptCore 实现。

使用方法

在 JavaScriptCore JSContext 中评估 Ruby

#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

require 的工作原理

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

您可以将更多路径添加到 $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

  1. pod install

下载 opal 的子模块,并构建必要文件

  1. git submodule update --init
  2. bundle install
  3. bundle exec rake

依赖项

  • JavaScriptCore (iOS 7.0+)
  • Ruby(用于编译 Opal)