Package clojure.lang

Examples of clojure.lang.Var.invoke()


                Var append_n_times_fn = null;
                if (DiametricService.fnMap.containsKey("append-n-times")) {
                    append_n_times_fn = DiametricService.fnMap.get("append-n-times");
                } else {
                    Var var = DiametricService.getFn("clojure.core", "load-string");
                    append_n_times_fn = (Var)var.invoke("(defn append-n-times [n array] (reduce concat (replicate n array)))");
                    DiametricService.fnMap.put("append-n-times", append_n_times_fn);
                }
                Integer n = (Integer)arg.toJava(Integer.class);
                Object value = append_n_times_fn.invoke(n, vector_or_seq);
                return DiametricCollection.getDiametricCollection(context, (List)value);
View Full Code Here


            throw context.getRuntime().newRuntimeError("argument should be array");
        }
        List other = (List)arg;
        try {
            Var var = DiametricService.getFn("clojure.core", "concat");
            Object value = var.invoke(vector_or_seq, other);
            return DiametricCollection.getDiametricCollection(context, (List)value);
        } catch (Throwable t) {
            throw context.getRuntime().newRuntimeError(t.getMessage());
        }
    }
View Full Code Here

    public IRubyObject op_cmp(ThreadContext context, IRubyObject arg) {
        if (!(arg instanceof List)) return context.getRuntime().getNil();
        List other = (List)arg;
        try {
            Var var = DiametricService.getFn("clojure.core", "compare");
            Integer value = (Integer)var.invoke(vector_or_seq, other);
            return context.getRuntime().newFixnum(value);
        } catch (Throwable t) {
            throw context.getRuntime().newRuntimeError(t.getMessage());
        }
    }
View Full Code Here

    }

    private IRubyObject commonArefIndex(ThreadContext context, Long index) {
        try {
            Var var = DiametricService.getFn("clojure.core", "nth");
            Object value = var.invoke(vector_or_seq, index);
            return DiametricUtils.convertJavaToRuby(context, value);
        } catch (Throwable t) {
            if (t instanceof IndexOutOfBoundsException) {
                // raised only from [index] when index is greater than the last index or negative
                if (index >= (long)getCount()) return context.getRuntime().getNil();
View Full Code Here

    }

    private Object commonArefBySubvec(Long start, Long end) {
        Var var = DiametricService.getFn("clojure.core", "subvec");
        // subvec returns from 'start' to element (- end 1)
        return var.invoke(vector_or_seq, start, end);
    }

    private Object commonArefByDropTake(Long start, Long length) {
        Var seq_subvec_fn = null;
        if (DiametricService.fnMap.containsKey("seq-subvec")) {
View Full Code Here

        Var seq_subvec_fn = null;
        if (DiametricService.fnMap.containsKey("seq-subvec")) {
            seq_subvec_fn = DiametricService.fnMap.get("seq-subvec");
        } else {
            Var var = DiametricService.getFn("clojure.core", "load-string");
            seq_subvec_fn = (Var)var.invoke("(defn seq-subvec [seq start length] (take length (drop start seq)))");
            DiametricService.fnMap.put("seq-subvec", seq_subvec_fn);
        }
        return seq_subvec_fn.invoke(vector_or_seq, start, length);
    }
View Full Code Here

        } else {
            return context.getRuntime().getFalse();
        }
        try {
            Var var = DiametricService.getFn("clojure.core", "=");
            if ((Boolean)var.invoke(vector_or_seq, other_vector)) {
                return context.getRuntime().getTrue();
            } else {
                return context.getRuntime().getFalse();
            }
        } catch (Throwable t) {
View Full Code Here

        Long index = (Long)args[0].toJava(Long.class);
        try {
            Var var = DiametricService.getFn("clojure.core", "nth");
            // counting vector size will be costly when the vector is way huge.
            // allows to raise exception for negative or too big index
            Object value = var.invoke(vector_or_seq, index);
            return DiametricUtils.convertJavaToRuby(context, value);
        } catch (Throwable t) {
            if (t instanceof IndexOutOfBoundsException) {
                return retryFetch(context, args, block, index);
            }
View Full Code Here

        if (index < 0L) index += (long)getCount();
        if (index < 0L) return handleError(context, args, block);

        try {
            Var var = DiametricService.getFn("clojure.core", "nth");
            Object value = var.invoke(vector_or_seq, index);
            return DiametricUtils.convertJavaToRuby(context, value);
        } catch (Throwable t) {
            if (t instanceof IndexOutOfBoundsException) {
                return handleError(context, args, block);
            }
View Full Code Here

            Var include_p_fn = null;
            if (DiametricService.fnMap.containsKey("include?")) {
                include_p_fn = DiametricService.fnMap.get("include?");
            } else {
                Var var = DiametricService.getFn("clojure.core", "load-string");
                include_p_fn = (Var)var.invoke("(defn include? [v array] (some (partial = v) array))");
                DiametricService.fnMap.put("include?", include_p_fn);
            }
            Object java_object = DiametricUtils.convertRubyToJava(context, arg);
            Object result = include_p_fn.invoke(java_object, vector_or_seq);
            if ((result instanceof Boolean) && (Boolean)result) {
View Full Code Here

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.