lib/less/java_script/v8_context.rb in less-2.2.2 vs lib/less/java_script/v8_context.rb in less-2.3.0
- old
+ new
@@ -12,22 +12,22 @@
class V8Context
def self.instance
return new
end
-
+
def initialize(globals = nil)
lock do
@v8_context = V8::Context.new
globals.each { |key, val| @v8_context[key] = val } if globals
end
end
def unwrap
@v8_context
end
-
+
def exec(&block)
lock(&block)
end
def eval(source, options = nil) # passing options not supported
@@ -51,40 +51,40 @@
@v8_context.send(symbol, *args)
else
super
end
end
-
+
private
-
+
def lock(&block)
do_lock(&block)
rescue V8::JSError => e
if e.in_javascript?
js_value = e.value.respond_to?(:'[]')
name = js_value && e.value["name"]
constructor = js_value && e.value['constructor']
- if name == "SyntaxError" ||
+ if name == "SyntaxError" ||
( constructor && constructor.name == "LessError" )
raise Less::ParseError.new(e, js_value ? e.value : nil)
end
# NOTE: less/parser.js :
- #
+ #
# error = new(LessError)({
# index: i,
# type: 'Parse',
# message: "missing closing `}`",
# filename: env.filename
# }, env);
- #
+ #
# comes back as value: RuntimeError !
- elsif e.value.to_s == "missing closing `}`"
+ elsif e.value.to_s =~ /missing closing `}`/
raise Less::ParseError.new(e.value.to_s)
end
raise Less::Error.new(e)
end
-
+
def do_lock
result, exception = nil, nil
V8::C::Locker() do
begin
result = yield
@@ -97,9 +97,9 @@
raise exception
else
result
end
end
-
+
end
end
-end
\ No newline at end of file
+end