Skip to content

JSContextFoundation is a Swift adapter for the JavaScriptCore Framework to build up the JavaScript runtime environment.

License

Notifications You must be signed in to change notification settings

kf99916/JSContextFoundation

Repository files navigation

JSContextFoundation

JSContextFoundation is a Swift adapter for the JavaScriptCore Framework to build up the JavaScript runtime environment.

CocoaPods GitHub stars GitHub forks CocoaPods Compatible Platform GitHub license

Requirements

  • iOS 8.0 or higher
  • Swift 2.3 or higher

Installation

Swift 2.3

pod 'JSContextFoundation', '~> 0.0.1'

Swift 3.1

pod 'JSContextFoundation', '~> 0.1.1'

Swift 2.3

.Package(url: "https://github.com/kf99916/JSContextFoundation.git", majorVersion: 0.0.1)

Swift 3.1

.Package(url: "https://github.com/kf99916/JSContextFoundation.git", majorVersion: 0.1.1)

JavaScript Runtime Environment

JSContextFoundation builds up the global objects for the JavaScript runtime environment to allow you execute JavaScript code like as in browser or Node.js. Here is the support list for the global objects:

global;
window;
console
  .log([data][, ...]);
  .info([data][, ...]);
  .warn([data][, ...]);
  .error([data][, ...]);

Usage

import JSContextFoundation

let jsContext = JSContextFoundation()

Import JavaScript Module

To import JavaScript module, the source of module can be file path or URL:

File Path

let path = NSBundle(forClass: self.dynamicType).pathForResource("Module", ofType: "js")!
do {
  try jsContext.requireWithPath(path)
} catch JSContextFoundationError.FileNotFound {
  print(path + " is not found")
} catch JSContextFoundationError.FileNotLoaded {
  print(path + " cannot be loaded")
} catch {
  print("Unknow Exception")
}

// ...

URL

let url = NSURL(string: "https://FQDN/Module.js")!
jsContext.requireWithUrl(url, completionHandler: {error in
   if let error = error {
      switch error {
        case JSContextFoundationError.FileNotFound:
            print(url.absoluteString + " is not found")
        case JSContextFoundationError.FileNotDownloaded:
            print(url.absoluteString + " is not downloaded")
        default:
            print("Unknown Error")
        }
        
        return
    }

    //  ...
})

All other usage is the same as JSContext. See JSContext in the Apple document for details.

Apps using JSContextFoundation

If you are using JSContextFoundation in your app and want to be listed here, simply create a pull request.

I am always curious who is using my projects :)

Hikingbook - by Zheng-Xiang Ke

Hikingbook

Author

Zheng-Xiang Ke, kf99916@gmail.com

License

JSContextFoundation is available under the MIT license. See the LICENSE file for more info.

About

JSContextFoundation is a Swift adapter for the JavaScriptCore Framework to build up the JavaScript runtime environment.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published