Пример #1
0
        void Run(string[] args)
        {
            Log($"starting...");
            Log($" CLOJURE_LOAD_PATH={Environment.GetEnvironmentVariable("CLOJURE_LOAD_PATH")}");

            IFn load = Clojure.var("clojure.core", "load-file");

            Log($" clojure.core/load-file found.");

            IFn printEx = Clojure.var("clojure.stacktrace", "print-cause-trace");

            Log($" clojure.stacktrace/print-stack-trace found.");

            var script = args[0];

            Log($" (load-file '{script}') starting...");
            try
            {
                load.invoke(script);
                Log($" (load-file '{script}') done.");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                printEx.invoke(ex);
            }

            Log("done.");
        }
Пример #2
0
        public object Run(IFn func)
        {
            var p = ClojureInit.Eval.invoke(Clojure.read("(promise)"));

            Run(() => { ClojureInit.Sync.invoke(func, this.app.ActiveUIDocument, p); });
            return(p);
        }
Пример #3
0
        public static void Main(string[] args)
        {
            var fn = Clojure.var("clojure.core", "println");

            fn.invoke("Hello from Clojure");
            Console.Read();
        }
Пример #4
0
        void Run(string[] args)
        {
            Log($"starting...");
            Log($" CLOJURE_LOAD_PATH={Environment.GetEnvironmentVariable("CLOJURE_LOAD_PATH")}");

            IFn load = Clojure.var("clojure.core", "load-file");

            Log($" clojure.load done.");

            load.invoke("./hello-world.clj");
            Log($" ./hello-world.clj done.");

            Log("done.");
        }
Пример #5
0
        static ClojureInit()
        {
            Eval = Clojure.var("clojure.core", "eval");

            object execFn = Clojure.read(@"
(defn execute  
  ""evaluates s-forms""
  ([request](execute request *ns*))
  ([request user-ns]    
      (try
        (binding [*ns* user-ns]
            (eval (read-string request)))
        (catch Exception e (str (. e Message) "" "" (. e StackTrace )))
)))");

            object nsGenFn = Clojure.read(@"
(defn generate-ns  
  ""generates ns for client connection""
  [] (let [user-ns (create-ns (symbol(str ""user"" )))]
    (execute(str ""(clojure.core/refer 'clojure.core)"") user-ns)
    user-ns)) ");


            //object definer = Clojure.read("(fn [name data] (def (symbol name) data ) ) ");
            //DefinerFn = Eval.invoke(definer) as IFn;

            var SyncCode = Clojure.read("(fn [handler document prom] (deliver prom (try (handler document)  (catch Exception e e)) )  ) ");

            Eval.invoke(Clojure.read("(def ^:dynamic sync)"));
            Sync = Eval.invoke(SyncCode) as IFn;
            var replCode = Clojure.read("(fn [in out err synchronizer] (binding [*in* in, *out* out *err* err sync synchronizer]  (clojure.main/with-bindings  (loop [] (try (clojure.main/repl ) (catch Exception e (clojure.main/repl-caught e) (set! *e e))) (flush) (recur)) ) ))");

            repl = Eval.invoke(replCode) as IFn;

            ExecuteInNs = Eval.invoke(execFn) as IFn;
            nsGen       = Eval.invoke(nsGenFn) as IFn;

            NS = nsGen.invoke();

            ExecuteInNs.invoke("(use \'clojure.reflect \'clojure.pprint \'clojure.repl)", NS);



            //ReplExe = ExecuteInNs.invoke(" (defn print-exe [r] (with-out-str (clojure.pprint/pprint (clojure.core/execute r)))") as IFn;
        }
Пример #6
0
        static void Main(string[] args)
        {
            Assembly.Load("clojurewm");
            var cmdParser = new CommandLineParser();

            cmdParser.ParseArguments(args, options);

            Clojure.AddNamespaceDirectoryMapping("clojurewm", @"src\clojurewm");

            var replInit = "(use 'clojurewm.init)\n" +
                           "(in-ns 'clojurewm.init)\n" +
                           "(main)";

            if (options.ClojureRepl)
            {
                Clojure.Require("clojure.main").main("-e", replInit, "-r");
            }
        }
Пример #7
0
        public Result OnStartup(UIControlledApplication application)
        {
            execute = eval.invoke(execFn) as IFn;
            nsGen   = eval.invoke(nsGenFn) as IFn;
            ns      = nsGen.invoke();

            application.ControlledApplication.DocumentOpened += (sender, args) =>
            {
                execute.invoke(
                    Clojure.read(" (def config {:port 9998 :name (name (gensym)) :accept 'clojure.core.server/repl }) "),
                    ns);
                execute.invoke(Clojure.read(" (def server (clojure.core.server/start-server config)) "), ns);
            };

            execute.invoke(
                Clojure.read(" (def config {:port 9998 :name (name (gensym)) :accept 'clojure.core.server/repl }) "),
                ns);
            server = execute.invoke(Clojure.read(" (def server (clojure.core.server/start-server config)) "), ns);



            return(Result.Succeeded);
        }
Пример #8
0
 void Awake()
 {
     Clojure.Require("boids");
     UpdateBoid = Clojure.GetVar("boids", "update-boid");
 }
Пример #9
0
 public static bool Validate(Action action, int iterations)
 {
     return(Validate(Clojure.Create(action).MemUsage, iterations));
 }
Пример #10
0
 static public void Main(string[] args)
 {
     Assembly.Load("clojurewm");
     Clojure.Require("clojurewm.init").main();
 }
        public object Run(IFn func)
        {
            var p = ClojureInit.Eval.invoke(Clojure.read("(promise)"));

            return(ClojureInit.Sync.invoke(func, document, p));
        }