/** * Returns an IFn associated with the namespace and name. * * @param ns a String or clojure.lang.Symbol * @param name a String or clojure.lang.Symbol * @return a clojure.lang.IFn */ public static IFn var(Object ns, Object name) { return Var.intern(asSym(ns), asSym(name)); }
@Override public Object eval(Reader reader, ScriptContext context) throws ScriptException { try { // Get engine bindings and send them to Clojure Bindings engineBindings = context.getBindings(ScriptContext.ENGINE_SCOPE); engineBindings.entrySet().forEach((entry) -> Var.intern(Namespace.findOrCreate(NAMESPACE_SYMBOL), Symbol.create(entry.getKey().intern()), entry.getValue(), true)); Var.pushThreadBindings( RT.map(RT.CURRENT_NS, RT.CURRENT_NS.deref(), RT.IN, new LineNumberingPushbackReader(context.getReader()), RT.OUT, context.getWriter(), RT.ERR, context.getErrorWriter())); Object result = Compiler.load(reader); return result; } catch (Exception e) { throw new ScriptException(e); } finally { Namespace.remove(NAMESPACE_SYMBOL); } }
public static Var intern(Namespace ns, Symbol sym, Object root){ return intern(ns, sym, root, true); }
public static Var intern(Symbol nsName, Symbol sym){ Namespace ns = Namespace.findOrCreate(nsName); return intern(ns, sym); }
private static Var fun(Namespace n, String s) { Var ret = Var.intern(n, Symbol.intern(s), dummyFn); return ret; }
private static Var proto(Namespace n, String s) { return Var.intern(n, Symbol.intern(s), null); }
private Associative applyBindings(final Map<String, Object> bindings, Associative mappings) { if (bindings != null) { final Set<Entry<String, Object>> entrySet = bindings.entrySet(); for (final Entry<String, Object> entry : entrySet) { final Symbol symbol = Symbol.intern(entry.getKey()); final Namespace userNs = Namespace.findOrCreate(Symbol .create("user".intern())); final Var var = Var.intern(userNs, symbol); mappings = mappings.assoc(var, entry.getValue()); } } return mappings; }
/** * Returns an IFn associated with the namespace and name. * * @param ns a String or clojure.lang.Symbol * @param name a String or clojure.lang.Symbol * @return a clojure.lang.IFn */ public static IFn var(Object ns, Object name) { return Var.intern(asSym(ns), asSym(name)); }
private static Var protoMethod(Var p, String s) { Var ret = Var.intern(p.ns, Symbol.intern(s), dummyFn); silence(ret, p); return ret; }
public static Var find(Symbol nsQualifiedSym){ if(nsQualifiedSym.ns == null) throw new IllegalArgumentException("Symbol must be namespace-qualified"); Namespace ns = Namespace.find(Symbol.intern(nsQualifiedSym.ns)); if(ns == null) throw new IllegalArgumentException("No such namespace: " + nsQualifiedSym.ns); return ns.findInternedVar(Symbol.intern(nsQualifiedSym.name)); }
public void write(Writer writer, Map<String, Object> stringObjectMap, Model model) throws IOException { try { final Var REQUIRE = Var.intern(RT.CLOJURE_NS, Symbol.create("require")); final Symbol REFLECTOR = Symbol.create("org.sonatype.maven.polyglot.clojure.dsl.writer"); REQUIRE.invoke(REFLECTOR); final Var WRITER = Var.intern(Namespace.findOrCreate(REFLECTOR), Symbol.create("write-model")); WRITER.invoke(model, writer); } catch (Exception e) { e.printStackTrace(); // Don't use new IOException(e) because it doesn't exist in Java 5 throw (IOException) new IOException(e.toString()).initCause(e); } }
private Associative applyBindings(final Map<String, Object> bindings, Associative mappings) { if (bindings != null) { final Set<Entry<String, Object>> entrySet = bindings.entrySet(); for (final Entry<String, Object> entry : entrySet) { final Symbol symbol = Symbol.intern(entry.getKey()); final Namespace userNs = Namespace.findOrCreate(Symbol.create("user".intern())); final Var var = Var.intern(userNs, symbol); var.setDynamic(true); mappings = mappings.assoc(var, entry.getValue()); } } return mappings; }
static public Var var(String ns, String name){ return Var.intern(Namespace.findOrCreate(Symbol.intern(null, ns)), Symbol.intern(null, name)); }
static public Var var(String ns, String name, Object init){ return Var.intern(Namespace.findOrCreate(Symbol.intern(null, ns)), Symbol.intern(null, name), init); }
public static Var internPrivate(String nsName, String sym){ Namespace ns = Namespace.findOrCreate(Symbol.intern(nsName)); Var ret = intern(ns, Symbol.intern(sym)); ret.setMeta(privateMeta); return ret; }
public Model read(final Reader input, final Map<String, ?> options) throws IOException { assert input != null; try { String location = PolyglotModelUtil.getLocation(options); final Var USE = Var.intern(RT.CLOJURE_NS, Symbol.create("use")); final Symbol READER = Symbol.create("org.sonatype.maven.polyglot.clojure.dsl.reader"); final Symbol LEININGEN = Symbol.create("org.sonatype.maven.polyglot.clojure.dsl.leiningen"); USE.invoke(READER); USE.invoke(LEININGEN); clojure.lang.Compiler.load(input, location, location); final Var MODEL = Var.intern(Namespace.findOrCreate(READER), Symbol.create("*MODEL*")); return (Model) ((Atom) MODEL.get()).deref(); } catch (Exception e) { // Don't use new IOException(e) because it doesn't exist in Java 5 throw (IOException) new IOException(e.toString()).initCause(e); } } }
public static void pushNSandLoader(ClassLoader loader){ Var.pushThreadBindings(RT.map(Var.intern(Symbol.intern("clojure.core"), Symbol.intern("*ns*")).setDynamic(), null, RT.FN_LOADER_VAR, loader, RT.READEVAL, RT.T )); }
public static void pushNS(){ Var.pushThreadBindings(PersistentHashMap.create(Var.intern(Symbol.intern("clojure.core"), Symbol.intern("*ns*")).setDynamic(), null)); }
@Override public Object eval(Reader reader, ScriptContext context) throws ScriptException { try { // Get engine bindings and send them to Clojure Bindings engineBindings = context.getBindings(ScriptContext.ENGINE_SCOPE); engineBindings.entrySet().forEach((entry) -> Var.intern(Namespace.findOrCreate(NAMESPACE_SYMBOL), Symbol.create(entry.getKey().intern()), entry.getValue(), true)); Var.pushThreadBindings( RT.map(RT.CURRENT_NS, RT.CURRENT_NS.deref(), RT.IN, new LineNumberingPushbackReader(context.getReader()), RT.OUT, context.getWriter(), RT.ERR, context.getErrorWriter())); Object result = Compiler.load(reader); return result; } catch (Exception e) { throw new ScriptException(e); } finally { Namespace.remove(NAMESPACE_SYMBOL); } }
public static void init() { CLOJURE_NS = namespace("clojure.core"); SAT = Var.intern(CLOJURE_NS, Symbol.intern("satisfies?"), dummyFn); //// clojure.bridge BRIDGE_NS = namespace("clojure.bridge"); RED2SEQ = fun(BRIDGE_NS, "red-to-seq"); //// dunaj.coll COLL_NS = namespace("dunaj.coll"); PRED = proto(COLL_NS, "IRed"); PLOOKUP = proto(COLL_NS, "ILookup"); PINDEXED = proto(COLL_NS, "IIndexed"); PCOUNTED = proto(COLL_NS, "ICounted"); GET = protoMethod(PLOOKUP, "-get"); CONTAINS = protoMethod(PLOOKUP, "-contains?"); NTH = protoMethod(PINDEXED, "-nth"); COUNT = protoMethod(PCOUNTED, "-count"); }