BowlerKernel
ClojureHelper.java
Go to the documentation of this file.
1 package com.neuronrobotics.bowlerstudio.scripting;
2 
3 import java.io.File;
4 import java.io.IOException;
5 import java.nio.file.Files;
6 import java.util.ArrayList;
7 import java.util.Arrays;
8 
9 import clojure.lang.RT;
10 import clojure.lang.Symbol;
11 import clojure.lang.Var;
12 
19 public class ClojureHelper implements IScriptingLanguage {
20 
21  public static Var REQUIRE = var("clojure.core", "require");
22  public static Var META = var("clojure.core", "meta");
23  public static Var EVAL = var("clojure.core", "eval");
24  public static Var READ_STRING = var("clojure.core", "load-string");
25 
31  public static Object require(String nsName) {
32  return REQUIRE.invoke(Symbol.intern(nsName));
33  }
34 
35  public static Object readString(String s) {
36  return READ_STRING.invoke(s);
37  }
38 
44  public static Var var(String varName) {
45  return var("clojure.core", varName);
46  }
47 
53  public static Var var(String nsName, String varName) {
54  return RT.var(nsName, varName);
55  }
56 
60  public static Object eval(String string) {
61  return EVAL.invoke(readString(string));
62  }
63 
64  @Override
65  public Object inlineScriptRun(File code, ArrayList<Object> args) {
66  byte[] bytes;
67  try {
68  bytes = Files.readAllBytes(code.toPath());
69  String s = new String(bytes, "UTF-8");
70  return inlineScriptRun(s, args);
71  } catch (IOException e1) {
72  // TODO Auto-generated catch block
73  e1.printStackTrace();
74  }
75  // System.out.println("Clojure returned of type="+ret.getClass()+" value="+ret);
76  return null;
77  }
78 
79  @Override
80  public Object inlineScriptRun(String code, ArrayList<Object> args) {
81 
82  return ClojureHelper.eval(code);
83  }
84 
85  @Override
86  public String getShellType() {
87  return "Clojure";
88  }
89 
90  @Override
91  public boolean getIsTextFile() {
92  // TODO Auto-generated method stub
93  return true;
94  }
95 
101  public String getDefaultContents() {
102  return "(println \"hello world\")";
103  }
104 
105  @Override
106  public ArrayList<String> getFileExtenetion() {
107  // TODO Auto-generated method stub
108  return new ArrayList<>(Arrays.asList("clj", "cljs", "cljc"));
109  }
110 
111 }
Object inlineScriptRun(File code, ArrayList< Object > args)
static Var var(String nsName, String varName)
Object inlineScriptRun(String code, ArrayList< Object > args)