| 37 | } |
| 38 | |
| 39 | public void inject(ScriptEngine engine) { |
| 40 | |
| 41 | this.engine = engine; |
| 42 | List<String> s = Arrays.asList("acorn.js", "acorn_loose.js", "walk.js", "signal.js", "tern.js", "def" + |
| 43 | ".js", "comment.js", "infer.js" /*"condense.js"*/); |
| 44 | // List<String> s = Arrays.asList("all-tern.js"); |
| 45 | |
| 46 | Collection<File> f = s.stream() |
| 47 | // .map(x -> new File(fieldagent.Main.app + "/modules/fieldcore/resources/tern/" + x)) |
| 48 | .map(x -> new File(fieldagent.Main.app + "/lib/web/tern/" + x)) |
| 49 | .collect(Collectors.toList()); |
| 50 | |
| 51 | Log.log("bindings", () -> "global scope bindings :" + engine.getContext() |
| 52 | .getBindings(ScriptContext.GLOBAL_SCOPE) |
| 53 | .keySet()); |
| 54 | Log.log("bindings", () -> "engine scope bindings :" + engine.getContext() |
| 55 | .getBindings(ScriptContext.ENGINE_SCOPE) |
| 56 | .keySet()); |
| 57 | |
| 58 | try { |
| 59 | engine.eval("__fieldglobal.self = {}"); |
| 60 | engine.eval("__fieldglobal.self.tern = {}"); |
| 61 | engine.eval("__fieldglobal.self.acorn= {}"); |
| 62 | engine.eval("__fieldglobal.self.infer= {}"); |
| 63 | engine.eval("__fieldglobal.tern = {}"); |
| 64 | engine.eval("self = __fieldglobal.self"); |
| 65 | engine.eval("tern = __fieldglobal.tern"); |
| 66 | } catch (ScriptException e) { |
| 67 | e.printStackTrace(); |
| 68 | } |
| 69 | |
| 70 | new Thread(() -> { |
| 71 | |
| 72 | for (File ff : f) { |
| 73 | try (FileReader fr = new FileReader(ff.getAbsolutePath())) { |
| 74 | engine.put("__FILE__", ff.getName()); |
| 75 | engine.eval(fr); |
| 76 | } catch (ScriptException e) { |
| 77 | e.printStackTrace(); |
| 78 | } catch (FileNotFoundException e) { |
| 79 | e.printStackTrace(); |
| 80 | } catch (IOException e) { |
| 81 | e.printStackTrace(); |
| 82 | } |
| 83 | } |
| 84 | |
| 85 | try { |
| 86 | // engine.put("__ecma5json", readFile(fieldagent.Main.app + |
| 87 | // "/modules/fieldcore/resources/tern/ecmascript.json")); |
| 88 | engine.put("__ecma5json", readFile(fieldagent.Main.app + "/lib/web/tern/ecmascript" + |
| 89 | ".json")); |
| 90 | engine.eval("self.ternServer=new self.tern.Server({defs: [JSON.parse(__ecma5json)]})"); |
| 91 | engine.eval("delete __ecma5json"); |
| 92 | } catch (ScriptException e) { |
| 93 | e.printStackTrace(); |
| 94 | } |
| 95 | }).start(); |
| 96 | } |