Class: ExecJS::RubyRhinoRuntime::Context

### Home Classes Methods

### In Files

- lib/execjs/ruby_rhino_runtime.rb

### Parent

Runtime::Context

### Methods

- ::new
- #call
- #eval
- #exec
- #unbox
- #wrap_error

### Class/Module Index

Quicksearch

- ExecJS
- ExecJS::DisabledRuntime
- ExecJS::DuktapeRuntime
- ExecJS::DuktapeRuntime::Context
- ExecJS::Encoding
- ExecJS::Error
- ExecJS::ExternalRuntime
- ExecJS::ExternalRuntime::Context
- ExecJS::ProgramError
- ExecJS::RubyRacerRuntime
- ExecJS::RubyRacerRuntime::Context
- ExecJS::RubyRhinoRuntime
- ExecJS::RubyRhinoRuntime::Context
- ExecJS::Runtime
- ExecJS::Runtime::Context
- ExecJS::RuntimeError
- ExecJS::RuntimeUnavailable
- ExecJS::Runtimes

No matching classes.

# ExecJS::RubyRhinoRuntime::Context

### Public Class Methods

new(runtime, source = "") click to toggle source

    # File lib/execjs/ruby_rhino_runtime.rb, line 6
    def initialize(runtime, source = "")
      source = encode(source)

      @rhino_context = ::Rhino::Context.new
      fix_memory_limit! @rhino_context
      @rhino_context.eval(source)
    rescue Exception => e
      raise wrap_error(e)
    end

### Public Instance Methods

call(properties, *args) click to toggle source

    # File lib/execjs/ruby_rhino_runtime.rb, line 34
    def call(properties, *args)
      unbox @rhino_context.eval(properties).call(*args)
    rescue Exception => e
      raise wrap_error(e)
    end

eval(source, options = {}) click to toggle source

    # File lib/execjs/ruby_rhino_runtime.rb, line 24
    def eval(source, options = {})
      source = encode(source)

      if /\S/ =~ source
        unbox @rhino_context.eval("(#{source})")
      end
    rescue Exception => e
      raise wrap_error(e)
    end

exec(source, options = {}) click to toggle source

    # File lib/execjs/ruby_rhino_runtime.rb, line 16
    def exec(source, options = {})
      source = encode(source)

      if /\S/ =~ source
        eval "(function(){#{source}})()", options
      end
    end

unbox(value) click to toggle source

    # File lib/execjs/ruby_rhino_runtime.rb, line 40
    def unbox(value)
      case value = ::Rhino::to_ruby(value)
      when Java::OrgMozillaJavascript::NativeFunction
        nil
      when Java::OrgMozillaJavascript::NativeObject
        value.inject({}) do |vs, (k, v)|
          case v
          when Java::OrgMozillaJavascript::NativeFunction, ::Rhino::JS::Function
            nil
          else
            vs[k] = unbox(v)
          end
          vs
        end
      when Array
        value.map { |v| unbox(v) }
      else
        value
      end
    end

wrap_error(e) click to toggle source

    # File lib/execjs/ruby_rhino_runtime.rb, line 61
    def wrap_error(e)
      return e unless e.is_a?(::Rhino::JSError)

      error_class = e.message == "syntax error" ? RuntimeError : ProgramError

      stack = e.backtrace
      stack = stack.map { |line| line.sub(" at ", "").sub("<eval>", "(execjs)").strip }
      stack.unshift("(execjs):1") if e.javascript_backtrace.empty?

      error = error_class.new(e.value.to_s)
      error.set_backtrace(stack)
      error
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.