summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--module/common/JsEngine.py31
-rw-r--r--module/common/json_layer.py11
2 files changed, 13 insertions, 29 deletions
diff --git a/module/common/JsEngine.py b/module/common/JsEngine.py
index 5612b12a3..d48cbfcec 100644
--- a/module/common/JsEngine.py
+++ b/module/common/JsEngine.py
@@ -19,14 +19,10 @@
from imp import find_module
from os.path import join, exists
+from urllib import quote
-ENGINE = ""
-try:
- find_module("spidermonkey")
- ENGINE = "spidermonkey"
-except:
- pass
+ENGINE = ""
if not ENGINE:
try:
@@ -73,6 +69,10 @@ if not ENGINE:
except:
pass
+
+
+
+
class JsEngine():
def __init__(self):
self.engine = ENGINE
@@ -83,11 +83,7 @@ class JsEngine():
def eval(self, script):
if not self.init:
- if ENGINE == "spidermonkey":
- import spidermonkey
- global spidermonkey
-
- elif ENGINE == "pyv8":
+ if ENGINE == "pyv8":
import PyV8
global PyV8
@@ -95,8 +91,6 @@ class JsEngine():
if not ENGINE:
raise Exception("No JS Engine")
- elif ENGINE == "spidermonkey":
- return self.eval_spidermonkey(script)
elif ENGINE == "pyv8":
return self.eval_pyv8(script)
elif ENGINE == "js":
@@ -105,25 +99,20 @@ class JsEngine():
return self.eval_rhino(script)
- def eval_spidermonkey(self, script):
- rt = spidermonkey.Runtime()
- cx = rt.new_context()
- return cx.execute(script)
-
def eval_pyv8(self, script):
rt = PyV8.JSContext()
rt.enter()
return rt.eval(script)
def eval_js(self, script):
- script = "print(eval('%s'))" % script.replace("'", '"')
+ script = "print(eval(unescape('%s')))" % quote(script)
p = subprocess.Popen(["js", "-e", script], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, bufsize=-1)
out, err = p.communicate()
res = out.strip()
return res
def eval_rhino(self, script):
- script = "print(eval('%s'))" % script.replace("'", '"')
+ script = "print(eval(unescape('%s')))" % quote(script)
p = subprocess.Popen(["java", "-cp", path, "org.mozilla.javascript.tools.shell.Main", "-e", script], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, bufsize=-1)
out, err = p.communicate()
res = out.strip()
@@ -135,12 +124,10 @@ class JsEngine():
if __name__ == "__main__":
js = JsEngine()
import subprocess
- import spidermonkey
#import PyV8
test = '"a"+"b"'
print js.eval_js(test)
- print js.eval_spidermonkey(test)
print js.eval_rhino(test)
print js.eval_pyv8(test) \ No newline at end of file
diff --git a/module/common/json_layer.py b/module/common/json_layer.py
index 7b1c80bb5..4d57a9f38 100644
--- a/module/common/json_layer.py
+++ b/module/common/json_layer.py
@@ -7,10 +7,7 @@ try: # since python 2.6
import json
from json import loads as json_loads
from json import dumps as json_dumps
-except ImportError:
- try:
- import module.lib.simplejson as json
- from module.lib.simplejson import loads as json_loads
- from module.lib.simplejson import dumps as json_dumps
- except:
- print "Could not import simplejson"
+except ImportError: #use system simplejson if available
+ import simplejson as json
+ from simplejson import loads as json_loads
+ from simplejson import dumps as json_dumps