Search in sources :

Example 6 with IFn

use of clojure.lang.IFn in project enumerable by hraberg.

the class ClojureTest method interactingWithJavaScript.

@Test
public void interactingWithJavaScript() throws Exception {
    ScriptEngine js = JavaScriptTest.getJavaScriptEngine();
    Function f = (Function) js.eval("var f = function(n, m) { return n * m; }; f;");
    IFn times = toIFn(LambdaJavaScript.toFn2(f));
    assertEquals(6.0, times.invoke(2, 3));
    defn("times-js", times);
    assertEquals(120.0, clj.eval("(reduce times-js 1 [1, 2, 3, 4, 5])"));
}
Also used : IFn(clojure.lang.IFn) Function(sun.org.mozilla.javascript.internal.Function) ScriptEngine(javax.script.ScriptEngine) GroovyTest(org.enumerable.lambda.support.groovy.GroovyTest) ScalaTest(org.enumerable.lambda.support.scala.ScalaTest) JRubyTest(org.enumerable.lambda.support.jruby.JRubyTest) Test(org.junit.Test) JavaScriptTest(org.enumerable.lambda.support.javascript.JavaScriptTest)

Example 7 with IFn

use of clojure.lang.IFn in project enumerable by hraberg.

the class ClojureTest method convertedFnToIFnThrowsArityWhenCalledWithTooManyArguments.

@Test(expected = IllegalArgumentException.class)
public void convertedFnToIFnThrowsArityWhenCalledWithTooManyArguments() throws Exception {
    IFn fn = toIFn(Lambda.λ(s, s.toUpperCase()));
    fn.invoke("hello", "world");
}
Also used : IFn(clojure.lang.IFn) GroovyTest(org.enumerable.lambda.support.groovy.GroovyTest) ScalaTest(org.enumerable.lambda.support.scala.ScalaTest) JRubyTest(org.enumerable.lambda.support.jruby.JRubyTest) Test(org.junit.Test) JavaScriptTest(org.enumerable.lambda.support.javascript.JavaScriptTest)

Example 8 with IFn

use of clojure.lang.IFn in project enumerable by hraberg.

the class JRubyTest method interactingWithClojure.

@Test
public void interactingWithClojure() throws Exception {
    Ruby ruby = Ruby.getGlobalRuntime();
    IFn star = (IFn) ClojureTest.getClojureEngine().eval("*");
    RubyProc proc = toProc(LambdaClojure.toFn2(star));
    assertEquals(ruby.newFixnum(6), proc.call(ruby.getThreadService().getCurrentContext(), new IRubyObject[] { ruby.newFixnum(2), ruby.newFixnum(3) }));
    rb.put("block", proc);
    assertEquals(120L, rb.eval("[1, 2, 3, 4, 5].inject &block"));
}
Also used : IFn(clojure.lang.IFn) RubyProc(org.jruby.RubyProc) IRubyObject(org.jruby.runtime.builtin.IRubyObject) Ruby(org.jruby.Ruby) LambdaJRuby(org.enumerable.lambda.support.jruby.LambdaJRuby) GroovyTest(org.enumerable.lambda.support.groovy.GroovyTest) ScalaTest(org.enumerable.lambda.support.scala.ScalaTest) Test(org.junit.Test) ClojureTest(org.enumerable.lambda.support.clojure.ClojureTest) JavaScriptTest(org.enumerable.lambda.support.javascript.JavaScriptTest)

Example 9 with IFn

use of clojure.lang.IFn in project storm by nathanmarz.

the class ClojureBolt method prepare.

@Override
public void prepare(final Map stormConf, final TopologyContext context, final OutputCollector collector) {
    IFn hof = Utils.loadClojureFn(_fnSpec.get(0), _fnSpec.get(1));
    try {
        IFn preparer = (IFn) hof.applyTo(RT.seq(_params));
        final Map<Keyword, Object> collectorMap = new PersistentArrayMap(new Object[] { Keyword.intern(Symbol.create("output-collector")), collector, Keyword.intern(Symbol.create("context")), context });
        List<Object> args = new ArrayList<Object>() {

            {
                add(stormConf);
                add(context);
                add(collectorMap);
            }
        };
        _bolt = (IBolt) preparer.applyTo(RT.seq(args));
        //this is kind of unnecessary for clojure
        try {
            _bolt.prepare(stormConf, context, collector);
        } catch (AbstractMethodError ame) {
        }
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}
Also used : IFn(clojure.lang.IFn) PersistentArrayMap(clojure.lang.PersistentArrayMap) Keyword(clojure.lang.Keyword) ArrayList(java.util.ArrayList)

Example 10 with IFn

use of clojure.lang.IFn in project jstorm by alibaba.

the class ClojureBolt method prepare.

@Override
public void prepare(final Map stormConf, final TopologyContext context, final OutputCollector collector) {
    IFn hof = Utils.loadClojureFn(_fnSpec.get(0), _fnSpec.get(1));
    try {
        IFn preparer = (IFn) hof.applyTo(RT.seq(_params));
        final Map<Keyword, Object> collectorMap = new PersistentArrayMap(new Object[] { Keyword.intern(Symbol.create("output-collector")), collector, Keyword.intern(Symbol.create("context")), context });
        List<Object> args = new ArrayList<Object>() {

            {
                add(stormConf);
                add(context);
                add(collectorMap);
            }
        };
        _bolt = (IBolt) preparer.applyTo(RT.seq(args));
        // this is kind of unnecessary for clojure
        try {
            _bolt.prepare(stormConf, context, collector);
        } catch (AbstractMethodError ame) {
        }
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}
Also used : IFn(clojure.lang.IFn) PersistentArrayMap(clojure.lang.PersistentArrayMap) Keyword(clojure.lang.Keyword) ArrayList(java.util.ArrayList)

Aggregations

IFn (clojure.lang.IFn)23 Test (org.junit.Test)16 GroovyTest (org.enumerable.lambda.support.groovy.GroovyTest)15 JavaScriptTest (org.enumerable.lambda.support.javascript.JavaScriptTest)15 JRubyTest (org.enumerable.lambda.support.jruby.JRubyTest)15 ScalaTest (org.enumerable.lambda.support.scala.ScalaTest)15 Keyword (clojure.lang.Keyword)6 PersistentArrayMap (clojure.lang.PersistentArrayMap)6 ArrayList (java.util.ArrayList)6 ClojureTest (org.enumerable.lambda.support.clojure.ClojureTest)4 ScriptEngine (javax.script.ScriptEngine)3 RubyProc (org.jruby.RubyProc)2 APersistentVector (clojure.lang.APersistentVector)1 IPersistentMap (clojure.lang.IPersistentMap)1 IPersistentVector (clojure.lang.IPersistentVector)1 ISeq (clojure.lang.ISeq)1 Closure (groovy.lang.Closure)1 FunctionFn2 (org.enumerable.lambda.support.javascript.LambdaJavaScript.FunctionFn2)1 LambdaJRuby (org.enumerable.lambda.support.jruby.LambdaJRuby)1 ScalaInterpreter (org.enumerable.lambda.support.scala.ScalaTest.ScalaInterpreter)1