Package clojure.lang

Examples of clojure.lang.Var


    }

    @JRubyMethod(name={"length", "size"})
    public IRubyObject length(ThreadContext context) {
        try {
            Var var = DiametricService.getFn("clojure.core", "count");
            Integer count = (Integer) var.invoke(entity);
            return context.getRuntime().newFixnum(count);
        } catch (Throwable t) {
            throw context.getRuntime().newRuntimeError(t.getMessage());
        }
    }
View Full Code Here


    }

    @JRubyMethod
    public IRubyObject to_s(ThreadContext context) {
        try {
            Var var = DiametricService.getFn("clojure.core", "str");
            String str = (String) var.invoke(entity);
            return context.getRuntime().newString(str);
        } catch (Throwable t) {
            throw context.getRuntime().newRuntimeError(t.getMessage());
        }
    }
View Full Code Here

    static Var getFn(String namespace, String fn) {
        String fullname = namespace + "/" + fn;
        if (fnMap.containsKey(fullname)) {
            return fnMap.get(fullname);
        } else {
            Var var = RT.var(namespace, fn);
            fnMap.put(fullname, var);
            return var;
        }
    }
View Full Code Here

        }
    }

    static final Map<String, Keyword> keywords = new HashMap<String, Keyword>();
    private void initializeKeywordMap() {
        Var keyword_fn = getFn("clojure.core", "keyword");
        keywords.put("lang", (Keyword)keyword_fn.invoke("lang"));
        keywords.put("clojure", (Keyword)keyword_fn.invoke("clojure"));
        keywords.put("java", (Keyword)keyword_fn.invoke("java"));
        keywords.put("params", (Keyword)keyword_fn.invoke("params"));
        keywords.put("code", (Keyword)keyword_fn.invoke("code"));
        keywords.put("requires", (Keyword)keyword_fn.invoke("required"));
        keywords.put("imports", (Keyword)keyword_fn.invoke("imports"));
        keywords.put("db/fn", (Keyword)keyword_fn.invoke("db/fn"));
    }
View Full Code Here

        if (!(arg instanceof RubyString)) {
            throw context.getRuntime().newArgumentError("Argument should be string");
        }
        RubyString ruby_string = (RubyString)arg;
        try {
            Var reader = DiametricService.getFn("clojure.core", "read-string");
            Object value = reader.invoke((String)ruby_string.asJavaString());
            RubyClass clazz = (RubyClass)context.getRuntime().getClassFromPath("Diametric::Persistence::Object");
            DiametricObject diametric_object = (DiametricObject)clazz.allocate();
            diametric_object.update(value);
            return diametric_object;
        } catch (Exception e) {
View Full Code Here

    }

    @JRubyMethod(meta=true, required=1, rest=true)
    public static IRubyObject fn(ThreadContext context, IRubyObject klazz, IRubyObject args[]) {
        try {
            Var list_fn = DiametricService.getFn("clojure.core", "list");
            List list = (List) list_fn.invoke();
            Var cons_fn = DiametricService.getFn("clojure.core", "conj");
            Var read_string_fn = DiametricService.getFn("clojure.core", "read-string");
            for (int i=args.length-1; i>-1; i--) {
                Object value = DiametricUtils.convertRubyToJava(context, args[i]);
                if (value instanceof RubyString) {
                    value = read_string_fn.invoke(value);
                }
                list = (List) cons_fn.invoke(list, value);
            }
            RubyClass clazz = (RubyClass)context.getRuntime().getClassFromPath("Diametric::Persistence::Fn");
            DiametricFn diametric_fn = (DiametricFn)clazz.allocate();
View Full Code Here

        }
        return null;
    }

    static PersistentVector fromRubyArray(ThreadContext context, RubyArray ruby_array) {
        Var var = DiametricService.getFn("clojure.core", "vector");
        PersistentVector clj_tx_data = (PersistentVector)var.invoke();
        Var adder = DiametricService.getFn("clojure.core", "conj");
        for (int i=0; i<ruby_array.getLength(); i++) {
            Object element = ruby_array.get(i);
            if (element instanceof RubyHash) {
                APersistentMap map = fromRubyHash(context, (RubyHash)element);
                clj_tx_data = (PersistentVector)adder.invoke(clj_tx_data, map);
            } else if (element instanceof RubyArray) {
                PersistentVector vector = fromRubyArray(context, (RubyArray)element);
                clj_tx_data = (PersistentVector)adder.invoke(clj_tx_data, vector);
            } else if (element instanceof IRubyObject) {
                clj_tx_data =
                        (PersistentVector)adder.invoke(clj_tx_data, DiametricUtils.convertRubyToJava(context, (IRubyObject)element));
            } else if (element instanceof String) {
                clj_tx_data = (PersistentVector)adder.invoke(clj_tx_data, getStringOrUUID((String)element));
            } else {
                clj_tx_data = (PersistentVector)adder.invoke(clj_tx_data, element);
            }
        }
        return clj_tx_data;
    }
View Full Code Here

        }
        return clj_tx_data;
    }

    private static APersistentMap fromRubyHash(ThreadContext context, RubyHash ruby_hash) {
        Var var = DiametricService.getFn("clojure.core", "hash-map");
        APersistentMap map = (APersistentMap)var.invoke();
        Var associator = DiametricService.getFn("clojure.core", "assoc");
        while (true) {
            IRubyObject pair = ruby_hash.shift(context);
            if (pair instanceof RubyNil) break;
            Object key = DiametricUtils.convertRubyToJava(context, ((RubyArray) pair).shift(context));
            Object value = DiametricUtils.convertRubyToJava(context, ((RubyArray) pair).shift(context));
            if (value instanceof RubyHash) {
                value = fromRubyHash(context, (RubyHash)value);
            } else if (value instanceof RubyArray) {
                value = fromRubyArray(context, (RubyArray)value);
            }
            map = (APersistentMap)associator.invoke(map, key, value);
        }
        return map;
    }
View Full Code Here

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

    @JRubyMethod(name="include?")
    public IRubyObject include_p(ThreadContext context, IRubyObject arg) {
        Object java_object = DiametricUtils.convertRubyToJava(context, arg);
        try {
            Var var = DiametricService.getFn("clojure.core", "contains?");
            if ((Boolean)var.invoke(set, java_object)) {
                return context.getRuntime().getTrue();
            } else {
                return context.getRuntime().getFalse();
            }
        } catch (Throwable t) {
View Full Code Here

TOP

Related Classes of clojure.lang.Var

Copyright © 2018 www.massapicom. 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.