Sha256: 0f69f9534934041b64aeaeeaa50072d6657b95f9bd335d70f0b3a4b1b0eb3fb2
Contents?: true
Size: 1.85 KB
Versions: 2
Compression:
Stored size: 1.85 KB
Contents
module Mustang # Raised when file specified to load doesn't exist. class ScriptNotFoundError < Errno::ENOENT end # Raised when try to exit from global context. class ImmortalContextError < RuntimeError end # Extended and more user-friendly version of <tt>Mustang::V8::Context</tt>. class Context < V8::Context # Evaluates given javascript source. Before evaluation it's able to # set given local variables within current context, eg: # # rt = Mustang::Context.new # rt.evaluate("foo=1") # => 1 # rt.evaluate("bar=foo+spam", :spam => 10) # => 11 # rt.evaliate("bar") # => 11 # def evaluate(source, locals={}, filename="<eval>") res = super(source, filename) errors << res if res.v8? and res.error? return res end alias_method :eval, :evaluate # Loads and evaluates given list of javascript files, eg: # # rt = Mustang::Runtime.new # rt.load("foo.js", "bar.js") # def load(*files) files.map { |filename| if File.exists?(filename) evaluate(File.read(filename), {}, filename) else raise ScriptNotFoundError, "Script `#{filename}' does not exts." end }.last end # Returns list of errors encountered within this context. def errors @errors ||= [] end # Returns <tt>true</tt> when it is global (immortal) context. def global? false end end # Context # This kind of context is used by <tt>Mustang</tt> module. class GlobalContext < Context def initialize(*) super enter end def exit # We have to disable exit, because global context is immortal. raise ImmortalContextError, "Global context can't be exited" end def global? true end end # GlobalContext end # Mustang
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
mustang-0.1.1 | lib/mustang/context.rb |
mustang-0.1.0 | lib/mustang/context.rb |