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