Skip to content

siuying/IGJavaScriptConsole

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

IGJavaScriptConsole

A JavaScript/Ruby REPL for your Objective-C apps.

http://f.cl.ly/items/2I3v1c0T001E2K1i1l2l/console.gif

Check the blog post for more details.

Why?

With iOS 7 shipped with JavaScriptCore, we can now run Opal (a JavaScript based ruby implementation) on iOS to extend the app dynamically.

Theres one major problem however, to compile the Ruby to JavaScript, then compile the app, install it and run takes a lot of time. What if we have a REPL that let us dynamically define and run Ruby code and run on device or simulator in realtime?

Implementation

  • Opal A Ruby to JavaScript compiler. It even come with sprockets extension which lets you bundle the compiled script easily.
  • JavaScriptCoreOpalAdditions A thin layer of Objective-C that load and provides native features to Opal.
  • jqConsole Web based terminal.
  • Ace Web based code editor with syntax highlighting.
  • CocoaHTTPServer HTTP and WebSocket server for realtime communication between iOS and desktop.

Installation

Add following lines to your Podfile:

pod 'IGJavaScriptConsole', '~> 0.1.3'

Usage

To start a console, create a server by supply a JSContext and language.

#import "IGJavaScriptConsoleServer.h"

NSError* error;
self.server = [[IGJavaScriptConsoleServer alloc] initWithContext:context
                                                        language:IGJavaScriptConsoleServerLanguageRuby];
self.server.port = 3300;
if (![self.server start:&error]) {
    DDLogError(@"error: %@", error);
}

Connect your browser to your device at 3300 port (e.g. http://localhost:3300) to connect to the console.

License

MIT License. See License.txt.

About

A JavaScript/Ruby REPL for your Objective-C apps.

Resources

License

Stars

Watchers

Forks

Packages

No packages published