Class: Herb::Embedded::Adapters::MiniRacer

Inherits:
EngineAdapter show all
Defined in:
lib/herb/embedded/adapters/mini_racer.rb

Overview

Reference EngineAdapter backed by mini_racer (bundled V8).

Instance Method Summary collapse

Methods inherited from EngineAdapter

binary

Constructor Details

#initializeMiniRacer

Returns a new instance of MiniRacer.



11
12
13
14
# File 'lib/herb/embedded/adapters/mini_racer.rb', line 11

def initialize
  super
  @context = ::MiniRacer::Context.new
end

Instance Method Details

#attach(name, &block) ⇒ Object



21
22
23
24
25
26
27
28
# File 'lib/herb/embedded/adapters/mini_racer.rb', line 21

def attach(name, &block)
  wrapped = proc do |*args|
    result = block.call(*args)
    result.is_a?(Binary) ? ::MiniRacer::Binary.new(result.raw) : result
  end
  @context.attach(name, wrapped)
  self
end

#call(function, *args) ⇒ Object



30
31
32
33
# File 'lib/herb/embedded/adapters/mini_racer.rb', line 30

def call(function, *args)
  converted = args.map { |arg| arg.is_a?(Binary) ? arg.raw.bytes : arg }
  @context.call(function, *converted)
end

#disposeObject



35
36
37
# File 'lib/herb/embedded/adapters/mini_racer.rb', line 35

def dispose
  @context.dispose
end

#load(source) ⇒ Object



16
17
18
19
# File 'lib/herb/embedded/adapters/mini_racer.rb', line 16

def load(source)
  @context.eval(source)
  self
end