File tree Expand file tree Collapse file tree 2 files changed +39
-2
lines changed
Expand file tree Collapse file tree 2 files changed +39
-2
lines changed Original file line number Diff line number Diff line change 33
44(ns yamlscript.global
55 (:require
6- [sci.core :as sci]))
6+ [sci.core :as sci])
7+ (:refer-clojure :exclude [create-ns
8+ intern]))
79
810#_(defn WWW [& xs]
911 (println (apply str " >>> " xs) " <<<" )
2325
2426(def env {})
2527
28+ (defn create-ns [ns ]
29+ (sci/create-ns ns ))
30+
31+ (defn intern [ns vym val]
32+ (sci/intern @sci-ctx ns vym val))
33+
2634(defn update-environ [m]
2735 (sci/alter-var-root ENV
2836 (fn [env]
Original file line number Diff line number Diff line change 1010 [yamlscript.common :refer [abspath dirname get-yspath]]
1111 [yamlscript.compiler]
1212 [yamlscript.global :as global]
13- [yamlscript.re :as re])
13+ [yamlscript.re :as re]
14+ [yamlscript.util :as util])
1415 (:refer-clojure
1516 :exclude [compile
1617 eval
4243(defn compile [code]
4344 (yamlscript.compiler/compile code))
4445
46+ (defn +def-vars [ns m]
47+ (let [ns
48+ (condf ns
49+ #(= (type %1 ) clojure.lang.Namespace) ns
50+ #(= (type %1 ) sci.lang.Namespace) ns
51+ string? (global/create-ns (symbol ns ))
52+ symbol? (global/create-ns ns )
53+ (util/die (str " Invalid namespace for set-vars: '" ns " '" )))]
54+ (reduce-kv
55+ (fn [_ k v]
56+ (let [key (condf k
57+ string? k
58+ keyword? (name k)
59+ symbol? (name k)
60+ (util/die (str " Invalid key for set-vars: '" k " '" )))
61+ key (str/replace key #"_" " -" )
62+ _ (when-not (re-matches re/symw key)
63+ (util/die (str " Invalid key for set-vars: '" key " '" )))
64+ key (symbol key)]
65+ (global/intern ns key v)))
66+ nil m)))
67+
68+ (defmacro def-vars-from-map [ns m]
69+ `(let [[m# ns#] (if (~m " +" )
70+ [(dissoc ~m " +" ) (symbol (~m " +" ))]
71+ [~m ~ns])]
72+ (+def-vars ns# m#)))
73+
4574(defn eval- [ys-code file stream-mode]
4675 (let [stream @global/stream-values
4776 _ (reset! global/stream-values [])
You can’t perform that action at this time.
0 commit comments